DOM XML 解析メソッドは、XML ファイルを Document オブジェクトとしてメモリに読み込み、さまざまな要素やノード オブジェクトを簡単にトラバースできます。要素とノードの移動は、順番に実行する必要はありません。
DOM 解析方法は、処理のために 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>
この XML ファイルの内容は従業員情報のリストであるため、従業員を表す Employee クラスを作成し、XML ファイル情報をプログラムに読み取る必要があります。
以下は 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; } }
ここでは、従業員オブジェクトに関する有用な情報を出力するために toString() メソッドをオーバーライドしていることに注意してください。次に、プログラム内で DOM 解析を使用して XML ファイルを読み取り、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(); } }
プログラムの出力は次のとおりです:
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 ファイルの場合は、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>
この XML ファイルの内容は従業員情報のリストであるため、従業員を表す Employee クラスを作成し、XML ファイル情報をプログラムに読み取る必要があります。
以下は 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; } }
ここでは、従業員オブジェクトに関する有用な情報を出力するために toString() メソッドをオーバーライドしていることに注意してください。次に、プログラム内で DOM 解析を使用して XML ファイルを読み取り、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(); } }
プログラムの出力は次のとおりです:
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 チュートリアル (2) DOM メソッドを使用して XML ファイルを解析する内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。