Автор оригинала: Pankaj Kumar.
Сегодня мы узнаем, как читать XML-файл на Java. Мы также узнаем, как анализировать XML-файл на java для создания объектов с помощью DOM-анализатора.
Синтаксический анализатор XML DOM проще всего понять. Он загружает XML-объект в память в виде документа, после чего вы можете легко перемещаться по различным элементам и узлам объекта. Обход элементов и узлов не обязательно должен быть в порядке.
Как читать XML – файл на Java
В этом уроке мы прочитаем XML-файл и проанализируем его, чтобы создать из него объект.
Вот XML-файл, который будет прочитан в этой программе.
Вот XML-файл, который будет прочитан в этой программе.
Pankaj 29 Java Developer Male Lisa 35 CSS Developer Female
Итак, этот XML-список сотрудников, чтобы прочитать этот XML-файл, я создам объект-компонент Employee, а затем мы проанализируем XML, чтобы получить список сотрудников.
Вот объект компонента сотрудника.
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() для печати полезной информации о сотруднике.
Прочитайте этот пост, чтобы знать, что вы всегда должны использовать аннотацию @Override для переопределения методов.
Если вы новичок в аннотациях, прочтите учебник по аннотациям java .
Синтаксический анализатор Java DOM
Вот программа java, которая использует синтаксический анализатор DOM для чтения и анализа XML-файла, чтобы получить список объектов Employee.
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 ListempList = new ArrayList (); 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 :Employees Employee:: Name=Pankaj Age=29 Gender=Male Role=Java Developer Employee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer
В реальной жизни неплохо проверить XML-файл, прежде чем разбирать его на объекты, узнайте, как проверить XML на соответствие XSD в java. Это все о том, как читать xml-файл или анализировать xml-файл на java.
Ссылка: Официальный W3.org Док