Java:
Làm việc với XML

Làm thế nào:

Java cung cấp các API như DOM (Document Object Model), SAX (Simple API for XML), và StAX (Streaming API for XML) để làm việc với XML. Dưới đây là một ví dụ về DOM để phân tích một tệp XML:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class XmlParser {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse("data.xml");
            
            doc.getDocumentElement().normalize();
            NodeList nodeList = doc.getElementsByTagName("employee");
            
            for (int i = 0; i < nodeList.getLength(); i++) {
                Element element = (Element) nodeList.item(i);
                System.out.println("Tên: " + element.getElementsByTagName("name").item(0).getTextContent());
                System.out.println("Tuổi: " + element.getElementsByTagName("age").item(0).getTextContent());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Giả sử data.xml trông như thế này:

<employees>
    <employee>
        <name>Jane Doe</name>
        <age>30</age>
    </employee>
    <employee>
        <name>John Doe</name>
        <age>40</age>
    </employee>
</employees>

Kết quả sẽ là:

Tên: Jane Doe
Tuổi: 30
Tên: John Doe
Tuổi: 40

Thảo luận sâu hơn

XML đã tồn tại kể từ cuối những năm ‘90, cung cấp một cách có cấu trúc và linh hoạt để trao đổi dữ liệu giữa các hệ thống khác nhau. Mặc dù JSON đã trở nên phổ biến hơn cho các API web mới do cú pháp đơn giản hơn và tích hợp chặt chẽ với JavaScript, XML vẫn được sử dụng rộng rãi trong môi trường doanh nghiệp, các dịch vụ web dựa trên SOAP và các chuẩn tài liệu như Office Open XML cho Microsoft Office.

Khi nói đến việc phân tích XML trong Java, API DOM tuyệt vời cho các tài liệu nhỏ: nó dựa trên cây và cho phép truy cập đầy đủ vào cấu trúc XML trong bộ nhớ. Tuy nhiên, đối với các tệp lớn hơn, nó có thể gây ra tình trạng tiêu thụ nhiều bộ nhớ. SAX và StAX thân thiện hơn với bộ nhớ, vì chúng dựa trên sự kiện và luồng tương ứng, nhưng chúng có thể kém tiện lợi hơn khi điều hướng các cấu trúc XML.

Đối với việc tạo hoặc sửa đổi XML, Java cũng cung cấp các gói javax.xml.transform và javax.xml.bind (JAXB). JAXB là một phần của Java SE cho đến phiên bản 10, sau đó, nó trở thành một thư viện riêng rẽ do việc loại bỏ các module Java EE khỏi Java SE. Đây là cách dựa trên ghi chú để tuần tự hóa đối tượng Java thành XML và ngược lại.

Xem thêm

Kiểm tra những nguồn liên quan khác để biết thêm về cách làm việc với XML trong Java: