将此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是否适用于此场景。任何想法都将不胜感激。
答案 0 :(得分:0)
由于嵌套不是很深,你可以只使用Entity,Customer类,然后将这些注释用于实体类中的映射:
@XmlElementWrapper(name="customers")
@XmlElement(name="customer")
public void setCustomers(List<Customer> customers) {
this.customers= customers;
}
参考文献: XmlElementWrapper
答案 1 :(得分:0)
在我看来,最佳方法是编写一个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&#39; bin&#39;文件夹在你的路径中。生成的类将在与targetNamespace同名的文件夹中创建。
使用这些,您可以按照Naimish的示例JAXB Hello World Example
中的说明进行操作