如何将XML文件中的特定信息解析为java中的对象?

如何将XML文件中的特定信息解析为java中的对象?,java,xml,object,dom,arraylist,Java,Xml,Object,Dom,Arraylist,我对编程非常陌生,尤其是对XML解析非常陌生,目前我在java中遇到了XML解析方面的问题。我尝试了几种方法从xml文件中获取特定信息,并将其写入对象中,然后将其放入arraylist并进行排序。这里是我的XML文件的捷径(我更改了名称和值,因为我不确定是否允许共享它):

我对编程非常陌生,尤其是对XML解析非常陌生,目前我在java中遇到了XML解析方面的问题。我尝试了几种方法从xml文件中获取特定信息,并将其写入对象中,然后将其放入arraylist并进行排序。这里是我的XML文件的捷径(我更改了名称和值,因为我不确定是否允许共享它):


这基本上就是我正在处理的问题。我有几个“对象块”,我需要在我的对象中包含以下信息(如果存在)。如果对象已填充,则应将其放入arraylist中,然后继续下一个块。 来自xml的信息:

  • 代码
  • 区域
  • 东西
  • 二次编码
  • 信息文本
  • 吉隆坡
  • 每个diag条目(我试图将它们放入对象中的arraylist)
到目前为止,我已经尝试使用getElementsByTagName和getter/setters获取对象的信息。

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"));