解析CDATA元素内的数据

时间:2013-01-16 15:21:07

标签: java xml xml-parsing

我需要解析一个看起来像这样的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行时遇到错误是否有办法在xml文档的CDATA部分中转义CDATA结束标记(]]&gt;)。

1 个答案:

答案 0 :(得分:3)

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

的内容
<?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在第一个元素之前被允许。