繁体   English   中英

在JAVA中使用JAXB2读取XML树(根,父级和子级),并创建编组和解组

[英]Read the XML tree(Root, parents and Children) using JAXB2 in JAVA and create marshalling and unmarshalling

我需要创建一个与Java类似的树(根,父级和子级)结构。 抱歉,我是新来的,无法附加图片。 我发现了与此问题有关的一些问题,但没有找到令人信服且解释清楚的答复。 应用程序业务包括食品超级类别(主菜,甜点和其他)。 这些类别中的每个类别都可以具有父项或子项,依此类推。

我需要使用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>

基本上,您需要先将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();
          }
     }
} 

看看这里完整的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM