我有一些對象讓我們說兩個,A和B.這些對象來自同一個類。我需要使用JAXB編組這些對象和XML輸出應該是這種形式:需要幫助格式化JAXB輸出
<Root>
<A>
<ID> an id </ID>
</A>
<B>
<ID> an id </ID>
</B>
</Root>
<!-- Then all A and B attributes must be listed !-->
<A>
<ID> an id </ID>
<attribute1> value </attribute1>
<attribute2> value </attribute2>
</A>
<B>
<ID> an id </ID>
<attribute1> value </attribute1>
<attribute2> value </attribute2>
</B>
如何生成JAXB這種格式?任何幫助表示讚賞。
更新: 更具體地講,假設我們有世界級的是這樣的:
@XmlRootElement
public class Human {
private String name;
private int age;
private Integer nationalID;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Integer getNationalID() {
return nationalID;
}
public void setNationalID(Integer nationalID) {
this.nationalID = nationalID;
}
}
和我們的主類是:
public class Main3 {
public static void main(String[] args) throws JAXBException {
Human human1 = new Human();
human1.setName("John");
human1.setAge(24);
human1.setNationalID(Integer.valueOf(123456789));
JAXBContext context = JAXBContext.newInstance(Human.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
StringWriter stringWriter = new StringWriter();
m.marshal(human1, stringWriter);
System.out.println(stringWriter.toString());
}
}
然後輸出將是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<human>
<age>24</age>
<name>John</name>
<nationalID>123456789</nationalID>
</human>
現在我需要的輸出是像這樣:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<human>
<nationalID>123456789</nationalID>
</human>
<human>
<nationalID>123456789</nationalID>
<age>24</age>
<name>John</name>
</human>
,這將有助於我畫XML對象的樹沒有屬性(僅ID),然後,但樹下面的所有定義。這可能使用JAXB或任何其他實現?
不幸的是,這不是我所需要的每個節點都包含它的屬性,這將產生一個XML。我更清楚地向我提出了這個問題(我的壞,對不起)。 –
我不認爲有一個解決方案,你想用jaxb做什麼,因爲它對命名過於嚴格。你打算如何使用xml,也許你可以用其他解析器生成它,或者在最壞的情況下,你可以創建自己的解析器來完成這個任務。我試圖創建你所期望的,但它只能用額外的標籤和/或命名空間。 – pXel
非常感謝您的回覆。你能告訴我你使用了多少額外的標籤嗎?我可以使用任何我需要的標籤。另外你認爲還有哪些解析器可以幫助我解決這個問題?該解決方案不必嚴格命名,但它應該只使用ID創建一個對象樹,對象的屬性應該在樹下,這是唯一重要的事情。先生, –