我需要创建一个类似于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>
答案 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以获取完整示例。