如何将XML文件中的特定信息解析为java中的对象?
我对编程非常陌生,尤其是对XML解析非常陌生,目前我在java中遇到了XML解析方面的问题。我尝试了几种方法从xml文件中获取特定信息,并将其写入对象中,然后将其放入arraylist并进行排序。这里是我的XML文件的捷径(我更改了名称和值,因为我不确定是否允许共享它):如何将XML文件中的特定信息解析为java中的对象?,java,xml,object,dom,arraylist,Java,Xml,Object,Dom,Arraylist,我对编程非常陌生,尤其是对XML解析非常陌生,目前我在java中遇到了XML解析方面的问题。我尝试了几种方法从xml文件中获取特定信息,并将其写入对象中,然后将其放入arraylist并进行排序。这里是我的XML文件的捷径(我更改了名称和值,因为我不确定是否允许共享它):
这基本上就是我正在处理的问题。我有几个“对象块”,我需要在我的对象中包含以下信息(如果存在)。如果对象已填充,则应将其放入arraylist中,然后继续下一个块。
来自xml的信息:
- 代码
- 区域
- 东西
- 二次编码
- 信息文本
- 吉隆坡
- 每个diag条目(我试图将它们放入对象中的arraylist)
File fXmlFile=new File(“/Users/mkyong/staff.xml”);
File fXmlFile = new File("/Users/mkyong/staff.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
//optional, but recommended
//read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("staff");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("Staff id : " + eElement.getAttribute("id"));
System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());
}
}
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
//可选,但推荐
//请阅读以下内容-http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
doc.getDocumentElement().normalize();
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“staff”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp
只需将STAFF-MARKEUP标记替换为您想要获取的代码或东西JAXB可能是您的解决方案
@XmlRootElement
public class Things {
private String code;
private String region;
@XmlElement
public void setCode(String code) {
this.code = code;
}
@XmlElement
public void setCode(String region) {
this.region = region;
}
}
更多信息
及
@XmlRootElement
public class Things {
private String code;
private String region;
@XmlElement
public void setCode(String code) {
this.code = code;
}
@XmlElement
public void setCode(String region) {
this.region = region;
}
}
JAXBContext jaxbContext = JAXBContext.newInstance(Things.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(new File("C:\\file.xml"));