验证XML aginst架构以限制XML元素内的特殊字符

时间:2016-05-24 00:35:08

标签: java xml xsd xml-parsing xsd-validation

我是XML验证的新手。请原谅我的无知:(
我需要使用DocumentBuilderFactory验证xml。
示例输入XML

<FirstElement>

          <ChildElement></ChildElement>FirstElementValue

</FirstElement>

预期结果:

应抛出异常,说明在<FirstElement> </FirstElement>

内不允许使用子元素

实际结果:
<FirstElement> </FirstElement>内的值将被解析如下。

<FirstElement>

              &lt; ChildElement &gt; &lt; / ChildElement &gt; FirstElementValue

</FirstElement>

由于该值被解析为"&lt;"而不是"<",因此在验证Schema时,XML验证不会失败。我过去一直在努力解决这个问题几天..请用示例代码向我建议。感谢

1 个答案:

答案 0 :(得分:0)

请提供架构和代码。提供的信息不足以提供帮助。无论如何,我试图提供一些方向以帮助。

将数据解释为字符串仍应给出错误,即XSD写得正确。

e.g。对于以下架构

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="FirstElement">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ChildElement"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="ChildElement" type="xs:string"/>
</xs:schema>

XML对上述xsd:

有效
<FirstElement>
          <ChildElement>FirstElementValue</ChildElement>
</FirstElement>

但以下内容无效

<FirstElement>
          <ChildElement></ChildElement>FirstElementValue
</FirstElement>