[英]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.