La méthode d'analyse XML DOM est la plus simple à comprendre. Elle lit le fichier XML en mémoire en tant qu'objet Document, et vous pouvez ensuite facilement parcourir différents objets d'élément et de nœud. Le déplacement des éléments et des nœuds n'a pas besoin d'être effectué dans l'ordre.
La méthode d'analyse DOM convient aux fichiers XML plus petits, puisqu'elle charge l'intégralité du fichier XML en mémoire pour le traitement, elle ne convient pas au traitement de fichiers XML plus volumineux. Pour les fichiers XML plus volumineux, vous devez utiliser l'analyse SAX.
Dans ce tutoriel, nous allons lire et analyser un fichier XML et l'utiliser pour créer des objets. Vous trouverez ci-dessous le fichier XML que nous allons analyser.
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>
Le contenu de ce fichier XML est une liste d'informations sur les employés, nous devons donc créer une classe Employee pour représenter les employés, puis lire les informations du fichier XML dans le programme .
Voici la définition de la classe Employee :
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; } }
Il convient de noter qu'ici j'ai remplacé la méthode toString() pour imprimer des informations utiles sur l'objet employé. Ensuite, nous utilisons l'analyse DOM dans le programme pour lire le fichier XML afin d'obtenir la liste d'objets Employee.
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(); } }
Le résultat du programme est le suivant :
Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer
Dans les circonstances réelles, nous devons d'abord vérifier la légalité du fichier XML avant de l'analyser. , découvrez comment utiliser XSD pour valider les fichiers XML.
Adresse originale : http://www.php.cn/
La méthode d'analyse XML DOM est la plus simple à comprendre. Elle lit le fichier XML en mémoire en tant qu'objet Document, puis vous. Différents objets éléments et nœuds peuvent être facilement parcourus. Le déplacement des éléments et des nœuds n'a pas besoin d'être effectué dans l'ordre.
La méthode d'analyse DOM convient aux fichiers XML plus petits, puisqu'elle charge l'intégralité du fichier XML en mémoire pour le traitement, elle ne convient pas au traitement de fichiers XML plus volumineux. Pour les fichiers XML plus volumineux, vous devez utiliser l'analyse SAX.
Dans ce tutoriel, nous allons lire et analyser un fichier XML et l'utiliser pour créer des objets. Vous trouverez ci-dessous le fichier XML que nous allons analyser.
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>
Le contenu de ce fichier XML est une liste d'informations sur les employés, nous devons donc créer une classe Employee pour représenter les employés, puis lire les informations du fichier XML dans le programme .
Voici la définition de la classe Employee :
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; } }
Il convient de noter qu'ici j'ai remplacé la méthode toString() pour imprimer des informations utiles sur l'objet employé. Ensuite, nous utilisons l'analyse DOM dans le programme pour lire le fichier XML afin d'obtenir la liste d'objets Employee.
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(); } }
Le résultat du programme est le suivant :
Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer
Dans les situations réelles, nous devons d'abord vérifier la légalité du fichier XML avant de l'analyser. , découvrez comment utiliser XSD pour valider les fichiers XML.
Ce qui précède est le contenu du didacticiel Java&Xml (2) utilisant la méthode DOM pour analyser les fichiers XML. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !