我有一个包含以下内容的 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 实现的: 将每个 XML 转换为 java Bean(使用 jaxb),然后使用迭代器 检查第一个 bean 中的值是否在第二个对象的值数组中。
我的问题:是否可以仅使用 xsd 文件来做到这一点?或者比纯编程更简单的任何其他方式?
最佳答案
XML 模式方法
如果您可以组合 XML 文档,那么您可以创建一个在 2 个元素之间具有 keyRef 关系的 XSD。
根据架构验证文档将突出显示任何错误。
如果您无法轻松组合 XML 文件,那么您可以使用 xinclude(只要您的 XSD 解析器支持它)。 Xerces例如支持它。
关于java - 根据其他 xml 中的值目录验证 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127630/