3 回答

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用 JAXB 解組器將 xml 文檔轉(zhuǎn)換為 java 對(duì)象。首先將 JAXB 依賴(lài)項(xiàng)添加到項(xiàng)目的類(lèi)路徑中。了解更多信息
SampleDTO.java
@XmlRootElement
public class SampleDTO {
private String id;
private List<SomeList> someList;
private List<OtherList> otherList;
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement
public List<SomeList> getSomeList() {
return someList;
}
public void setSomeList(List<SomeList> someList) {
this.someList = someList;
}
@XmlElement
public List<OtherList> getOtherList() {
return otherList;
}
public void setOtherList(List<OtherList> otherList) {
this.otherList = otherList;
}
}
SomeList.java
@XmlRootElement
public class SomeList {
private List<SomeObject> someObject;
@XmlElement
public List<SomeObject> getSomeObject() {
return someObject;
}
public void setSomeObject(List<SomeObject> someObject) {
this.someObject = someObject;
}
}
OtherList.java
@XmlRootElement
public class OtherList {
private List<OtherObject> otherObject;
@XmlElement
public List<OtherObject> getOtherObject() {
return otherObject;
}
public void setOtherObject(List<OtherObject> otherObject) {
this.otherObject = otherObject;
}
}
SomeObject.java
@XmlRootElement
public class SomeObject {
private String amount;
private String id;
private String someDescription;
@XmlElement
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement
public String getSomeDescription() {
return someDescription;
}
public void setSomeDescription(String someDescription) {
this.someDescription = someDescription;
}
}
OtherObject.java
@XmlRootElement
public class OtherObject {
private String flag;
private String id;
private String otherDescription;
@XmlElement
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement
public String getOtherDescription() {
return otherDescription;
}
public void setOtherDescription(String otherDescription) {
this.otherDescription = otherDescription;
}
}
使用 JAXB 解組
public class Main {
public static void main(String[] args) {
try {
File file = new File("file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(SampleDTO.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
SampleDTO sampleDTO= (SampleDTO) jaxbUnmarshaller.unmarshal(file);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
有許多可用的開(kāi)源 XML 處理包。我喜歡杰克遜。這是關(guān)于 Jackson XML 的 Baeldung 文章的鏈接
總結(jié)是這樣的:
將 Jackson 依賴(lài)項(xiàng)添加到您的 POM。
創(chuàng)建一個(gè)代表您的 xml 結(jié)構(gòu)的對(duì)象結(jié)構(gòu)。
創(chuàng)建一個(gè) XmlMapper。
使用 XmlMapper。

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
你的 java 類(lèi)/對(duì)象應(yīng)該至少有這 3 個(gè)實(shí)例變量:
private int amount
private int id
private String description
然后使用一些 xml 解析庫(kù)(例如jdom2),并且對(duì)于您迭代的每個(gè)<someObject>標(biāo)簽,初始化您的類(lèi)的一個(gè)新對(duì)象并為其分配從 xml 解析的值(數(shù)量/id/描述),并添加每個(gè)新創(chuàng)建的對(duì)象在列表或數(shù)組等中。
添加回答
舉報(bào)