是否考虑了同一标签中但CDATA标签之前的字符?

时间:2019-04-15 10:09:14

标签: xml cdata

我在解析使用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.

第二个示例可行,但我的问题是为什么?

0 个答案:

没有答案