Heim  >  Artikel  >  Backend-Entwicklung  >  Java&Xml-Tutorial (2) DOM zum Parsen von XML-Dateien verwenden

Java&Xml-Tutorial (2) DOM zum Parsen von XML-Dateien verwenden

黄舟
黄舟Original
2017-02-22 14:30:351686Durchsuche


Die DOM-XML-Parsing-Methode ist am einfachsten zu verstehen. Sie liest die XML-Datei als Dokumentobjekt in den Speicher und Sie können dann problemlos verschiedene Element- und Knotenobjekte durchlaufen. Das Durchqueren von Elementen und Knoten muss nicht in der richtigen Reihenfolge erfolgen.
Die DOM-Parsing-Methode eignet sich für kleinere XML-Dateien. Da sie die gesamte XML-Datei zur Verarbeitung in den Speicher lädt, ist sie nicht für die Verarbeitung größerer XML-Dateien geeignet. Für größere XML-Dateien müssen Sie SAX-Parsing verwenden.
In diesem Tutorial lesen und analysieren wir eine XML-Datei und verwenden sie zum Erstellen von Objekten. Unten finden Sie die XML-Datei, die wir analysieren werden.
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>

Der Inhalt dieser XML-Datei ist eine Liste von Mitarbeiterinformationen. Daher müssen wir eine Employee-Klasse erstellen, um Mitarbeiter darzustellen, und dann die XML-Dateiinformationen in das Programm einlesen .
Das Folgende ist die Definition der Employee-Klasse:

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;
    }

}

Es ist zu beachten, dass ich hier die toString()-Methode überschrieben habe, um nützliche Informationen über das Employee-Objekt auszudrucken. Als Nächstes verwenden wir die DOM-Analyse im Programm, um die XML-Datei zu lesen und die Mitarbeiterobjektliste zu erhalten.
XMLReaderDOM.java

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();
    }

}

Die Programmausgabe lautet wie folgt:

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

Unter tatsächlichen Umständen müssen wir zunächst die Rechtmäßigkeit der XML-Datei überprüfen, bevor wir sie analysieren Erfahren Sie, wie Sie XSD zur Validierung von XML-Dateien verwenden.

Ursprüngliche Adresse: http://www.php.cn/

Die DOM-XML-Parsing-Methode ist am einfachsten zu verstehen. Sie liest die XML-Datei als Dokumentobjekt in den Speicher und dann Sie Verschiedene Element- und Knotenobjekte können problemlos durchlaufen werden. Das Durchqueren von Elementen und Knoten muss nicht in der richtigen Reihenfolge erfolgen.
Die DOM-Parsing-Methode eignet sich für kleinere XML-Dateien. Da sie die gesamte XML-Datei zur Verarbeitung in den Speicher lädt, ist sie nicht für die Verarbeitung größerer XML-Dateien geeignet. Für größere XML-Dateien müssen Sie SAX-Parsing verwenden.
In diesem Tutorial lesen und analysieren wir eine XML-Datei und verwenden sie zum Erstellen von Objekten. Unten finden Sie die XML-Datei, die wir analysieren werden.
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>

Der Inhalt dieser XML-Datei ist eine Liste von Mitarbeiterinformationen. Daher müssen wir eine Employee-Klasse erstellen, um Mitarbeiter darzustellen, und dann die XML-Dateiinformationen in das Programm einlesen .
Das Folgende ist die Definition der Employee-Klasse:

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;
    }

}

Es ist zu beachten, dass ich hier die toString()-Methode überschrieben habe, um nützliche Informationen über das Employee-Objekt auszudrucken. Als Nächstes verwenden wir die DOM-Analyse im Programm, um die XML-Datei zu lesen und die Mitarbeiterobjektliste zu erhalten.
XMLReaderDOM.java

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();
    }

}

Die Programmausgabe lautet wie folgt:

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

Unter tatsächlichen Umständen müssen wir zunächst die Rechtmäßigkeit der XML-Datei überprüfen, bevor wir sie analysieren Erfahren Sie, wie Sie XSD zur Validierung von XML-Dateien verwenden.

Das Obige ist der Inhalt des Java&Xml-Tutorials (2) mit der DOM-Methode zum Parsen von XML-Dateien. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn