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