簡體   English   中英

JAXB僅解組XML文件的深層子集

[英]JAXB unmarshalling only a deeply-nested subset of an XML file

我的應用程序收到一個很長的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實例化我的對象。

是否有我缺少的東西,或者我正在嘗試使用JAXB做什么?

這可以通過使用@XmlPath擴展名的EclipseLink JAXB(MOXy)來@XmlPath

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

欲獲得更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM