![](/img/trans.png)
[英]How do I convert java objects to xml using JAXB without using annotation?
[英]How do I convert the following xml into java objects using JAXB
將XML轉換為Java對象的最佳方法是什么?
<entity>
<customers id=2 other="data">
<customer name="john">testData1</customer>
<customer name="jenny">testData2</customer>
<customer name="joe">testData3</customer>
<customer name="joanna">testData4</customer>
</customers>
</entity>
最好使用帶有HashMap的自定義XMLAdapter來轉換<customer>
多個xml行嗎?
我不確定XMLAdapter是否適合這種情況。 任何想法,將不勝感激。
由於嵌套不是很深,因此您可以只具有Entity,Customer類,然后將這些注釋用於實體類中的映射:
@XmlElementWrapper(name="customers")
@XmlElement(name="customer")
public void setCustomers(List<Customer> customers) {
this.customers= customers;
}
我認為,最好的方法是編寫一個xsd文件以針對您的xml進行驗證。 您可以使用它通過與Java捆綁在一起的xjc來生成Java類。 這應該可以帶您到那里。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:NameOfNamespace="http://enter.your.namespace.here"
targetNamespace="http://enter.your.namespace.here"
attributeFormDefault="unqualified"
elementFormDefault="qualified">
<complexType name="customer">
<simpleContent>
<extension base="string">
<attribute name="name"/>
</extension>
</simpleContent>
</complexType>
<complexType name="customers">
<sequence>
<element name="customer" type="NameOfNamespace:customer"/>
</sequence>
<attribute name="id" type="positiveInteger"/>
<attribute name="other"/>
</complexType>
<complexType name="entity" >
<sequence>
<element name="customers" type="NameOfNamespace:customers" minOccurs="1" maxOccurs="1"/>
</sequence>
</complexType>
<element name="entity" type="NameOfNamespace:entity"/>
</schema>
將命令提示符打開到放置xsd文件的文件夾,然后生成Java代碼,只需鍵入以下內容:
$ xjc nameOfSchemaFile.xsd
假設您的java'bin'文件夾在您的路徑中。 生成的類將在與目標名稱空間相同名稱的文件夾中創建。
使用這些,您可以按照Naimish的示例JAXB Hello World示例中的說明進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.