我在解析使用CDATA的XML-in-XML文档时遇到意外错误。似乎我通过在CDATA数据之前(但在同一标记内)删除了空格和注释来解决了该问题。为什么会这样?
不起作用:
<?xml version="1.0" encoding="UTF-8"?>
<ValidationRequest>
<XMLDocument>
<!-- The XML to check is placed here in CDATA -->
<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<Order>
<!-- Order example -->
<ID>123</cbc:ID>
</Order>]]>
</XMLDocument>
</ValidationRequest>
作品:
<?xml version="1.0" encoding="UTF-8"?>
<ValidationRequest>
<XMLDocument><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<Order>
<!-- Order example -->
<ID>123</cbc:ID>
</Order>]]>
</XMLDocument>
</ValidationRequest>
我正在使用Jackson来反序列化(外部)XML对象,其中将XMLDocument属性反序列化为String类型,以供以后处理。我正在针对将XML字符串作为输入流的模式进行验证。 这是关于该元素的反序列化注释的一部分:
@XmlRootElement(name = "ValidationRequest")
public class ValidationRequest {
@XmlElement(name="XMLDocument")
public String xmlDocument;
...
我希望两者都能工作,但是第一个示例给出了以下错误。
ParseError at [row,col]:[4,8]
Message: The processing instruction target matching "[xX][mM][lL]" is not allowed.
第二个示例可行,但我的问题是为什么?