Рубрики
Без рубрики

Как читать XML-файл на Java (DOM-анализатор)

Как читать xml-файл на java, java чтение xml, java синтаксический анализ xml в объект, пример синтаксического анализа java DOM учебник, чтение xml на java, синтаксический анализ xml на примере java.

Автор оригинала: 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
            List empList = 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 Док