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 파일의 적법성을 확인해야 합니다. 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 파일을 구문 분석하기 전에 적법성을 확인해야 합니다. XSD를 사용하여 유효성을 검사하는 방법을 알아보세요. XML 파일.
위는 DOM 메소드를 사용하여 XML 파일의 내용을 구문 분석하는 Java&Xml 튜토리얼입니다. 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!