2017-10-11 56 views
0

我從某個服務器接收XML。我需要將xml解析爲java對象並將java對象編組爲xml。映射定製對象所需的JAXB幫助

我該怎麼做?

以下是我的XML格式。

<parent> 
    <child> 
     <order> 
      <row no="1"> 
       <AB val="ID">205</AB> 
       <AB val="NAME">JS</AB> 
       <AB val="DETAILS"> 
        <prod no="1"> 
         <AB val="PRODID">205</AB> 
         <AB val="NAME">Prod1</AB> 
        </prod> 
        <prod no="2"> 
         <AB val="PRODID">206</AB> 
         <AB val="NAME">Prod2</AB> 
        </prod> 
       </AB> 
      </row> 
     </order> 
    </child> 
</parent> 
+0

你有格式的xsd嗎? – daniu

+0

對不起XSD不可用 –

回答

0

您可以使用jaxb2-maven-pluginxjc目標構建過程中生成的XML架構(XSD),Java類(可以通過任何在線發生器從XML生成XML模式,例如使用this)。

您也可以從控制檯使用xjc並預先生成您的類,它已內置到java中(請參閱<your jdk path>/bin/xjc.exe)。

然後只需使用編組/解組,做的工作,例如:

JAXBContext jaxbContext = JAXBContext.newInstance(YourClazz.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
YourClazz yourclazz = (YourClazz) jaxbUnmarshaller.unmarshall(new File("path/to/your/xml")); 

順便說一句,我建議緩存JAXBContext情況下,使用Map<Class<?>, JAXBContext>。不要緩存marshaller/unmarshaller tho。

+0

它正在生成 受保護的List 內容; 這裏我需要像string,int這樣的元素類型 –