Java&Xml教程(二)使用DOM方式解析XML文件

互联网 17-2-22

DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象。遍历元素和节点不需要按照顺序进行。 DOM解析方式适合尺寸较小的XML文件,由于它將整个XML文件全部装载到内存中处理,所以不太适合处理尺寸较大的XML文件。对于较大的XML文件需要使用SAX解析。 在本教程中我们将对XML文件读取和解析,并用它来创建对象。下面是我们将要解析的XML文件。 employee.xml

<?xml version="1.0"?><Employees>      <Employee>          <name>Pankaj</name>          <age>29</age>          <role>Java Developer</role>          <gender>Male</gender>      </Employee>      <Employee>          <name>Lisa</name>          <age>35</age>          <role>CSS Developer</role>          <gender>Female</gender>      </Employee></Employees>
package com.journaldev.xml;public class Employee {      private String name;          private String gender;          private int age;          private String role;          public String getName() {              return name;      }    public void setName(String name) {        this.name = name;      }    public String getGender() {        return gender;      }    public void setGender(String gender) {        this.gender = gender;      }    public int getAge() {        return age;      }    public void setAge(int age) {        this.age = age;      }    public String getRole() {        return role;      }    public void setRole(String role) {        this.role = role;      }    @Override      public String toString() {              return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender +                      " Role=" + this.role;      }    }
package com.journaldev.xml;  import java.io.File;import java.io.IOException;  import java.util.ArrayList;  import java.util.List;  import javax.xml.parsers.DocumentBuilder;  import javax.xml.parsers.DocumentBuilderFactory;  import javax.xml.parsers.ParserConfigurationException;  import org.w3c.dom.Document;import org.w3c.dom.Element;  import org.w3c.dom.Node;import org.w3c.dom.NodeList;  import org.xml.sax.SAXException;public class XMLReaderDOM {        public static void main(String[] args) {          String filePath = "employee.xml";          File xmlFile = new File(filePath);          DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();          DocumentBuilder dBuilder;          try {              dBuilder = dbFactory.newDocumentBuilder();              Document doc = dBuilder.parse(xmlFile);              doc.getDocumentElement().normalize();              System.out.println("Root element :" + doc.getDocumentElement().getNodeName());              NodeList nodeList = doc.getElementsByTagName("Employee");              //now XML is loaded as Document in memory, lets convert it to Object List              List<Employee> empList = new ArrayList<Employee>();              for (int i = 0; i < nodeList.getLength(); i++) {                  empList.add(getEmployee(nodeList.item(i)));              }              //lets print Employee list information              for (Employee emp : empList) {                  System.out.println(emp.toString());              }          } catch (SAXException | ParserConfigurationException | IOException e1) {              e1.printStackTrace();          }        }          private static Employee getEmployee(Node node) {          //XMLReaderDOM domReader = new XMLReaderDOM();          Employee emp = new Employee();          if (node.getNodeType() == Node.ELEMENT_NODE) {              Element element = (Element) node;              emp.setName(getTagValue("name", element));              emp.setAge(Integer.parseInt(getTagValue("age", element)));              emp.setGender(getTagValue("gender", element));              emp.setRole(getTagValue("role", element));          }            return emp;      }          private static String getTagValue(String tag, Element element) {          NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();          Node node = (Node) nodeList.item(0);          return node.getNodeValue();      }    }

程序输出内容如下:

Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male   Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer

在实际情况下,我们在解析XML文件之前先要对XML文件的合法性进行校验,学习如何使用XSD校验XML文件。

原文地址:http://www.php.cn/

DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象。遍历元素和节点不需要按照顺序进行。 DOM解析方式适合尺寸较小的XML文件,由于它將整个XML文件全部装载到内存中处理,所以不太适合处理尺寸较大的XML文件。对于较大的XML文件需要使用SAX解析。 在本教程中我们将对XML文件读取和解析,并用它来创建对象。下面是我们将要解析的XML文件。 employee.xml

<?xml version="1.0"?><Employees>      <Employee>          <name>Pankaj</name>          <age>29</age>          <role>Java Developer</role>          <gender>Male</gender>      </Employee>      <Employee>          <name>Lisa</name>          <age>35</age>          <role>CSS Developer</role>          <gender>Female</gender>      </Employee></Employees>
package com.journaldev.xml;public class Employee {      private String name;          private String gender;          private int age;          private String role;          public String getName() {              return name;      }    public void setName(String name) {              this.name = name;      }    public String getGender() {              return gender;      }    public void setGender(String gender) {              this.gender = gender;      }    public int getAge() {              return age;      }    public void setAge(int age) {              this.age = age;      }    public String getRole() {              return role;      }    public void setRole(String role) {              this.role = role;      }    @Override      public String toString() {              return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender +                      " Role=" + this.role;      }    }
package com.journaldev.xml;  import java.io.File;  import java.io.IOException;  import java.util.ArrayList;  import java.util.List;  import javax.xml.parsers.DocumentBuilder;  import javax.xml.parsers.DocumentBuilderFactory;  import javax.xml.parsers.ParserConfigurationException;  import org.w3c.dom.Document;import org.w3c.dom.Element;  import org.w3c.dom.Node;import org.w3c.dom.NodeList;  import org.xml.sax.SAXException;public class XMLReaderDOM {        public static void main(String[] args) {          String filePath = "employee.xml";          File xmlFile = new File(filePath);          DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();          DocumentBuilder dBuilder;          try {              dBuilder = dbFactory.newDocumentBuilder();              Document doc = dBuilder.parse(xmlFile);              doc.getDocumentElement().normalize();              System.out.println("Root element :" + doc.getDocumentElement().getNodeName());              NodeList nodeList = doc.getElementsByTagName("Employee");              //now XML is loaded as Document in memory, lets convert it to Object List              List<Employee> empList = new ArrayList<Employee>();              for (int i = 0; i < nodeList.getLength(); i++) {                  empList.add(getEmployee(nodeList.item(i)));              }              //lets print Employee list information              for (Employee emp : empList) {                  System.out.println(emp.toString());              }          } catch (SAXException | ParserConfigurationException | IOException e1) {              e1.printStackTrace();          }        }          private static Employee getEmployee(Node node) {          //XMLReaderDOM domReader = new XMLReaderDOM();          Employee emp = new Employee();          if (node.getNodeType() == Node.ELEMENT_NODE) {              Element element = (Element) node;              emp.setName(getTagValue("name", element));              emp.setAge(Integer.parseInt(getTagValue("age", element)));              emp.setGender(getTagValue("gender", element));              emp.setRole(getTagValue("role", element));          }            return emp;      }          private static String getTagValue(String tag, Element element) {          NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();          Node node = (Node) nodeList.item(0);          return node.getNodeValue();      }    }

程序输出内容如下:

Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer

在实际情况下,我们在解析XML文件之前先要对XML文件的合法性进行校验,学习如何使用XSD校验XML文件。

以上就是Java&Xml教程(二)使用DOM方式解析XML文件的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Java&Xml教程(一)简介

相关资讯