我的应用程序接收到一个非常长的 XML 文档,我想用它来填充一个 Java 对象。
然而,虽然 XML 中有大量嵌套很深的元素,但我只对其中的一小部分感兴趣。我也只对从 XML 到 Java 感兴趣。我不需要将我的 Java 对象编组回 XML 的能力。
如果可能,我想为此使用 JAXB,因为无论如何我的应用程序的依赖项已经包含 Eclipselink MOXy。但是,我不确定如何仅获取少数深度嵌套的元素值。我查看了@XmlElementWrapper
注释,并考虑使用它来注释我的 Java 类字段,如下所示:
...
@XmlElementWrapper(name="LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL")
@XmlElement(name="STATUS")
private String statusCode;
...
但是,我不知道该name
属性是否有效。反正我没有那么远......编译器告诉我@XmlElementWrapper
只能在成员变量是 Collection 类型时使用。我试图提取的大多数字段都是单个值。
我尝试跳过@XmlElementWrapper
注释,看看是否@XmlElement
单独可以理解 XPath 值:
...
@XmlElement(name="LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL/STATUS")
private String statusCode;
...
虽然这不会导致编译错误,但它也不起作用。在运行时,Eclipselink 只是null
在这个字段中用 a 实例化我的对象。
有什么我遗漏的,或者我正在尝试用 JAXB 做些什么?