【发布时间】:2016-09-10 14:17:03
【问题描述】:
我有一些第三方 XML 以下列形式解析。测试的数量是无限的,但总是一个整数。
<tests>
<test_1>
<foo bar="baz" />
</test_1>
<test_2>
<foo bar="baz" />
</test_2>
<test_3>
<foo bar="baz" />
</test_3>
</tests>
我目前正在使用 XPath 解析它,但它很麻烦。有什么方法可以在 XSD 模式中表达这种 XML 风格并从中生成 JAXB 类。
据我所知,这是不可能的,唯一可能的是来自
how can I define an xsd file that allows unknown (wildcard) elements?
的<xs:any processContents="lax"/> 技术,但是这允许任何内容,而不是特别是<test_<integer>。我只是想确认我没有遗漏一些 XSD/JAXB 技巧?
请注意,我更希望 XML 具有这样的结构。我可能会尝试说服第三方进行更改。
<tests>
<test id="1">
<foo bar="baz" />
</test>
<test id="2">
<foo bar="baz" />
</test>
<test id="3">
<foo bar="baz" />
</test>
</tests>
【问题讨论】:
-
XSD 以一组固定的元素/类型为中心。 JAXB 只是从它们创建类。如何确定具有命名方案“test_xxx”的不同元素的数量? --- 但是,我看到了另一种选择:首先使用 XSLT 将带有这些元素的传入 XML 更改为适合您的需要并使用
<test id="xxx">命名方案的元素。为此,您可以轻松编写 XSD 并从中生成 JAXB 类。