在JAVA中使用JAXB2读取XML树(Root,parent和Children)并创建编组和解组

时间:2014-12-03 16:14:56

标签: java tree marshalling unmarshalling jaxb2

我需要创建一个类似于Java的树(Root,parent和children)结构。对不起,我是新来的,无法附上图片。我发现了一些与此相关的问题,但我没有找到令人信服且解释清楚的答案。应用程序业务包括食品超级类别(主菜,甜点和其他)。每个类别都可以包含父项或子项等。

我需要使用JAXB2

对Java中的xml树结构进行编组和解组

我的xml看起来像

<Hierarchy name="" desc="" title="" tablename=""> 
    <Columns> 
        <column name="" desc="" group="" id=""/> 
     </Columns> 
     <Nodes> 
         <Node name=" " desc="" id=""> 
             <Node name="" desc="" id="" /> 
         </Node> <Node name=" " desc="" id="" /> 
    </Nodes> 
    <Rules> 
        <Rule name="" node="" measure="" product="" dataset="" datatype="" /> 
    </Rules>
</Hierarchy>

1 个答案:

答案 0 :(得分:0)

基本上你需要首先将XML转换为java对象,然后编组并解组结果。 如果这是您的XML文件:

<Hierarchy name="" desc="" title="" tablename="">
    <Columns> 
        <column name="" desc="" group="" id=""/>
    </Columns>
    <Nodes>
        <Node name=" " desc="" id="">
            <Node name="" desc="" id="" />
        </Node>
        <Node name=" " desc="" id="" /> 
    </Nodes>
    <Rules>
        <Rule name="" node="" measure="" product="" dataset="" datatype="" />
    </Rules>
</Hierarchy>

您可以执行以下操作:

package org.arpit.javapostsforlearning.jaxb;

import java.io.File;
import java.util.ArrayList;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class JAXBXMLToJava {
    public static void main(String[] args) {
          try {
                // create JAXB context and initializing Marshaller
                // you need to make the class of food before
                JAXBContext jaxbContext = JAXBContext.newInstance(Food.class);

                Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

                // specify the location and name of xml file to be read
                File XMLfile = new File('MyXml.xml');

                // this will create Java object - Food from the XML file
                Food desserts  = (Food) jaxbUnmarshaller.unmarshal(XMLfile);

                System.out.println('Food Name: '+ desserts.getName());

          } catch (JAXBException e) {
                e.printStackTrace();
          }
     }
} 

查看Here以获取完整示例。