簡體   English   中英

如何使用JAXB解組該xml

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM