[英]how to unmarshall this xml using JAXB
如何使用JAXB解組以下xml並填充Java對象。
我是這個JAXB的新手。 我需要為多個客戶填充Java對象。 我在客戶列表中有兩個客戶,需要將其轉換為java對象。
同樣也適用於xml中提到的服務...
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<customerList><customer><name>ATNT</name><category>Network</category>
<country>USA</country><device>7600</device></customer>
<customer>
<name>cisco</name>
<category>Network</category>
<country>USA</country>
<device>ubr10k</device>
</customer>
</customerList>
<services>
<softwareServices>
<company>TCS</company>
<country>India</country>
<clients>
<bank>SBI</bank>
<insurance>LIC</insurance>
<telecom>Ericsson</telecom>
</clients>
</softwareServices>
<softwareServices>
<company>Infosys</company>
<country>India</country>
<clients>
<bank>IDBI</bank>
<insurance>Lombard</insurance>
<telecom>Airtel</telecom>
</clients>
</softwareServices>
</services>
</root>
1.使用.xsd文件(請參見下面的代碼片段SO_customer.xsd )
2.執行xjc:
C:\dev\jdk1.6.0_41\bin\xjc -d src SO_customer.xsd
這將生成您需要的Java類
3.解組(請參見下面的代碼片段MainClass.java )。 這將輸出第一個客戶的名稱:“ ATNT”
SO_customer.xsd (來自您提供的xml ...):
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="customerList">
<xs:complexType>
<xs:sequence>
<xs:element name="customer" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:string" name="category"/>
<xs:element type="xs:string" name="country"/>
<xs:element type="xs:string" name="device"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="services">
<xs:complexType>
<xs:sequence>
<xs:element name="softwareServices" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="company"/>
<xs:element type="xs:string" name="country"/>
<xs:element name="clients">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="bank"/>
<xs:element type="xs:string" name="insurance"/>
<xs:element type="xs:string" name="telecom"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
MainClass.java :
package call;
import generated.Root;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class MainClass {
public static void main(String[] args) {
try {
File file = new File("C:\\SO\\src\\input.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Root root = (Root) jaxbUnmarshaller.unmarshal(file);
System.out.println(root.getCustomerList().getCustomer().get(0).getName());
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.