【问题标题】:Validating XML aginst Schema to Restrict Special Characters inside XML Elements验证 XML aginst Schema 以限制 XML 元素中的特殊字符
【发布时间】:2016-05-24 00:35:07
【问题描述】:

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

<FirstElement>

          <ChildElement></ChildElement>FirstElementValue

</FirstElement>

预期结果:

应该抛出异常,说明内部不允许子元素
&lt;FirstElement&gt; &lt;/FirstElement&gt;

实际结果:
&lt;FirstElement&gt; &lt;/FirstElement&gt; 中的值被解析如下。

<FirstElement>

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

</FirstElement>

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

【问题讨论】:

  • 谁能回答我的问题 :( :(
  • 请显示您的 Java 代码,但只显示相关部分:请参阅 stackoverflow.com/help/mcve 寻求帮助。

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


【解决方案1】:

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

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

例如对于以下架构

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多