根据其他 xml 中的值目录验证 XML
Validate XML against a catalog of values in other xml
我有一个包含以下内容的 XML 文件:
<example>
<firstNode>
<someInfo>Hello</someInfo>
</firstNode>
<secondNode>
<myFlagColors>
<using>RED</using>
<using>WHITE</using>
<using>BLUE</using>
</myFlagColors>
</secondNode>
</example>
我必须检查每个节点 <using>XYZ</using>
都有一个来自另一个 XML 的值(如 XYZ),例如这个:
<colorCatalog>
<color>WHITE</color>
<color>BLACK</color>
<color>RED</color>
<color>GREEN</color>
<color>BLUE</color>
<color>YELLOW</color>
<color>PINK</color>
<color>ORANGE</color>
<color>CYAN</color>
</colorCatalog>
我不喜欢我目前使用 java 进行的实现:
转换 java Bean 中的每个 XML(使用 jaxb),然后使用迭代器
检查第一个 bean 中的值是否在第二个对象的值数组中。
我的问题:是否可以仅通过使用 xsd 文件来做到这一点?或者比纯编程更简单的任何其他方式?
XML 模式方法
如果您可以组合 XML 个文档,那么您可以创建一个 XSD,它在 2 个元素之间具有 keyRef 关系。
根据架构验证文档然后会突出显示任何错误。
如果您不能轻松地合并 XML 文件,那么您可以使用 xinclude(只要您的 XSD 解析器支持它)。 Xerces例如支持。
我有一个包含以下内容的 XML 文件:
<example>
<firstNode>
<someInfo>Hello</someInfo>
</firstNode>
<secondNode>
<myFlagColors>
<using>RED</using>
<using>WHITE</using>
<using>BLUE</using>
</myFlagColors>
</secondNode>
</example>
我必须检查每个节点 <using>XYZ</using>
都有一个来自另一个 XML 的值(如 XYZ),例如这个:
<colorCatalog>
<color>WHITE</color>
<color>BLACK</color>
<color>RED</color>
<color>GREEN</color>
<color>BLUE</color>
<color>YELLOW</color>
<color>PINK</color>
<color>ORANGE</color>
<color>CYAN</color>
</colorCatalog>
我不喜欢我目前使用 java 进行的实现: 转换 java Bean 中的每个 XML(使用 jaxb),然后使用迭代器 检查第一个 bean 中的值是否在第二个对象的值数组中。
我的问题:是否可以仅通过使用 xsd 文件来做到这一点?或者比纯编程更简单的任何其他方式?
XML 模式方法
如果您可以组合 XML 个文档,那么您可以创建一个 XSD,它在 2 个元素之间具有 keyRef 关系。
根据架构验证文档然后会突出显示任何错误。
如果您不能轻松地合并 XML 文件,那么您可以使用 xinclude(只要您的 XSD 解析器支持它)。 Xerces例如支持。