有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解析CDATA元素内的数据

我需要解析一个如下所示的XML文件

1.<?xml version="1.0" encoding="UTF-8"?>
2.<Root>
3.<Record>
4.<in><![CDATA[<?xml version="1.0" encoding="UTF-8"?><XML><Attribute AttrID="A">Test</Attribute>-<Attribute AttrID="B"> <![CDATA[Aap Noot Mies]]> </Attribute>]]></XML></in>
5.<out><![CDATA[]]></out>
6.</Record>
7.</Root>

我在分析第4行时遇到错误有没有办法转义CDATA结束标记(]]>;)在xml文档的CDATA节中


共 (1) 个答案

  1. # 1 楼答案

    您的输入格式不正确有几个错误,我认为您需要修复生成的任何错误,以生成更像

    <?xml version="1.0" encoding="UTF-8"?>
    <Root>
    <Record>
    <in><![CDATA[<?xml version="1.0" encoding="UTF-8"?><!  -  ><XML><Attribute AttrID="A">Test</Attribute>-<Attribute AttrID="B"> <![CDATA[Aap Noot Mies]]<![CDATA[> </Attribute></XML>]]></in>
    <out><![CDATA[]]></out>
    </Record>
    </Root>
    

    请注意,外部CDATA需要<![CDATA[而不是<!CDATA[。需要引用]]>的第一次使用(例如,在此处停止和启动外部CDATA部分)。外部]]>需要移动到</XML>之后,以便引用元素的结尾和开头

    这使得文件在技术上结构良好,尽管W3C保留了名为XML(或通常以大写或小写xml开头)的元素,以便在XML相关规范中使用,并且不应在用户XML文件中使用,除非它是W3C定义的特定元素或属性(例如xmlns

    此外,我在XML声明后的破折号周围添加了一条(引用的)注释,就好像CDATA部分被提取并制作成XML文档一样,这会使生成的文档格式不好,因为在第一个元素之前只允许空白或注释和PI