java - 使用结构化元素名称解析 XML

标签 java xml xsd jaxb

我有一些第三方 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 类。

据我所知这是不可能的,唯一可能的是 <xs:any processContents="lax"/>技术来自 how can I define an xsd file that allows unknown (wildcard) elements? ,但是这允许任何内容,而不是特定的 <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>

最佳答案

虽然有多种方法可以处理具有结构化名称(例如数字后缀)的元素,

确实应该修复底层 XML 设计(test_1 应该是 test)。

关于java - 使用结构化元素名称解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316067/

相关文章:

sql - 相当于XQuery中的AS?

java - 为批量更新累积数据并在超过大小阈值限制或定时持续时间后发送?

java - 我如何动态修改 Java 中的 SQL 查询?

java - 在 Activity 之间更改 TextView

java - 从 servlet 读取 xml 文件

XML 发现以元素开头的无效内容。预计为 '{}' 之一

java - 为什么这段代码一直是 "terminated"?

java - Android R 文件中的内部类

java - 使用 javax.xml.validation.Validator : cannot resolve types come from 2nd XSD 针对 XSD 进行 XML 验证

xml - XSD : model properties (name/value pairs)