Java 跳过]]>;在xml版本1.1的CDATA部分

Java 跳过]]>;在xml版本1.1的CDATA部分,java,xml,parsing,xml-parsing,cdata,Java,Xml,Parsing,Xml Parsing,Cdata,我使用的是CDATA部分,但文本由一些字符组成,因此它正在关闭,我遇到了解析异常 <xyz><![CDATA[\..\..\\..\..\\..\..\\..\..\\..\..\\\boot.ini]]>&#0;</xyz> 使用上述逻辑的问题是,我不知道从DB读取的哪个元素将包含“]]>”以便我可以写入两个CDATA部分 需要您的帮助。使用CDATA节转义任意文本容易出错,因为它们无法嵌套 改为使用转义文本 但是,如果你真的想使用CDATA分区,

我使用的是CDATA部分,但文本由一些字符组成,因此它正在关闭,我遇到了解析异常

<xyz><![CDATA[\..\..\\..\..\\..\..\\..\..\\..\..\\\boot.ini]]>&#0;</xyz>
使用上述逻辑的问题是,我不知道从DB读取的哪个元素将包含“]]>”以便我可以写入两个CDATA部分


需要您的帮助。

使用CDATA节转义任意文本容易出错,因为它们无法嵌套

改为使用转义文本


但是,如果你真的想使用CDATA分区,维基百科页面的链接可能会有所帮助。

想象你可以在CDATA分区中添加任意文本,只需在开头添加
,在结尾添加
]>
,这是一个非常常见的错误。您需要首先检查数据是否包含
]>
。如果是这样,通常的补救方法是在第一个']'之后分割它,因此如果内容是
A]]>B
,它将被写为
B]>


避免此问题的一个好方法是避免“手动”序列化XML,而是使用序列化库来完成此工作。

Hm。示例中的错误似乎是节后的0字符,而不是节本身。
// Add a CDATA section to the root element
Element element = doc.getDocumentElement();
CDATASection cdata = doc.createCDATASection("data");
element.appendChild(cdata);

// If "]]>" appears in the text, two CDATA sections will be written out
cdata = doc.createCDATASection("more]]>data");
element.appendChild(cdata);