簡體   English   中英

JAXB解組包裝清單

[英]JAXB unmarshal wrapped list

是否可以直接將打包的元素列表解組到JAXB中的List<String>中?

例如,我有一個類似XML:

<TEST>

  <MIME_INFO>
      <MIME>
        <MIME_SOURCE>foo.png</MIME_SOURCE>
        <MIME_PURPOSE>normal</MIME_PURPOSE>
      </MIME>
      <MIME>
        <MIME_SOURCE>bar.png</MIME_SOURCE>
        <MIME_PURPOSE>normal</MIME_PURPOSE>
      </MIME>
  </MIME_INFO>

</TEST>

那么是否有可能直接將此XML文件解組到僅包含{“ foo.png”,“ bar.png”}的List<String>中?

我知道您可以使用正確的注釋創建一個類層次結構來執行此解組,但我想使用如下代碼:

import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "TEST")
@XmlAccessorType (XmlAccessType.FIELD)
public class Info {

    // -> what annotation to put here?
    private List<String> infos;

    public List<String> getInfos() {
        return infos;
    }

}

和主文件:

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class UnmarshallingJAXB {

    public static void main(String[] args) throws JAXBException {

        JAXBContext jaxbContext = JAXBContext.newInstance(Info.class);
        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

        Info info = (Info) jaxbUnmarshaller.unmarshal(new File("test.xml"));

        // should output foo.png and bar.png
        info.getInfos().forEach(System.out::println);

    }   
}

有什么辦法嗎?

很抱歉回答得這么晚,但是如果搜索相關問題,這將是Google的第一招,因此無論如何可能會有所幫助。

是的,可以使用

@XmlElementWrapper

結合

@XmlElement

有關更多詳細信息,請參見此示例

暫無
暫無

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

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