【问题标题】:how to ignore elements not in the XSD schema while parsing解析时如何忽略不在 XSD 架构中的元素
【发布时间】:2015-02-25 13:17:20
【问题描述】:

我需要在 java 中解析 XML 并跳过 XSD 架构中未定义的任何标记。换句话说,只有 Schema 中的元素被解析,其他元素被忽略而没有验证错误。 只有在 XSD 中找到的元素是不同的数据类型时才会存在验证错误...等

** 非常简单的模式:-** root 包含 x,y,z 所有字符串。

示例 1

<root>
    <x>anyvalue</x>
    <y>anyvalue</y>
    <z>anyvalue</z>
</root>

结果 1

<root>
    <x>anyvalue</x>
    <y>anyvalue</y>
    <z>anyvalue</z>
</root>

示例 2:-

<root>
    <x>anyvalue</x>
    <notdefined>anyvalue</notdefined>
    <z>anyvalue</z>
</root>

结果 2:-

<root>
    <x>anyvalue</x>
    <z>anyvalue</z>
</root>

示例 3:-

<root>
    <notdefined>anyvalue</notdefined>
    <x>anyvalue</x>
    <z>anyvalue</z>
</root>

结果 3:-

<root>
    <x>anyvalue</x>
    <z>anyvalue</z>
</root>

【问题讨论】:

    标签: java xml validation parsing xsd


    【解决方案1】:

    如果您正在编写架构,请使用带有 processContents="skip" 或 processContent="lax" 的通配符,以确保未声明的元素不会产生有效性错误。

    如果您使用的是预先存在的架构,那么请检查您的解析器/验证器是否允许您过滤您看到的错误,或者从预先存在的架构中派生辅助架构。使用通配符使事物在辅助架构中有效,即使它们在主架构中无效。

    【讨论】:

    • 您能否提供一个涵盖该问题确切情况的 xsd 示例?我似乎找不到通配符和 processContents 的合适示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多