1

我的应用程序接收到一个非常长的 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 做些什么?

4

1 回答 1

1

这可以通过使用@XmlPath扩展的 EclipseLink JAXB (MOXy) 来完成。

@XmlPath("LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL/STATUS/text()")
private String statusCode;

了解更多信息

于 2012-08-17T19:02:00.997 回答