Rumah  >  Artikel  >  Java  >  Bagaimana untuk menghuraikan dan menjana dokumen XML menggunakan perpustakaan parsing XML dalam Java?

Bagaimana untuk menghuraikan dan menjana dokumen XML menggunakan perpustakaan parsing XML dalam Java?

王林
王林asal
2023-08-02 16:09:33902semak imbas

Bagaimana untuk menghuraikan dan menjana dokumen XML menggunakan perpustakaan penghuraian XML dalam Java?

XML (Extensible Markup Language) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data berstruktur. Dalam pembangunan Java, kita sering menghadapi keperluan untuk menghuraikan dan menjana dokumen XML. Java menyediakan banyak perpustakaan penghuraian XML, seperti DOM, SAX dan JDOM, dll. Perpustakaan ini boleh membantu kami memproses dokumen XML dengan mudah.

Artikel ini akan memperkenalkan cara menggunakan pustaka penghuraian XML dalam Java untuk menghuraikan dan menjana dokumen XML dan memberikan contoh kod yang sepadan.

1. Parse XML document

  1. DOM parsing

DOM (Document Object Model) adalah kaedah penghuraian berdasarkan struktur pokok Keseluruhan dokumen XML dimuatkan ke dalam memori untuk membentuk struktur pokok Nod pokok untuk membaca dan mengubah suai kandungan XML.

Berikut ialah contoh kod untuk menghuraikan dokumen XML menggunakan DOM:

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

public class DOMParser {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("example.xml");
        
            NodeList nodeList = document.getElementsByTagName("student");
            for (int i = 0; i < nodeList.getLength(); i++) {
                Node node = nodeList.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;
                    String id = element.getAttribute("id");
                    String name = element.getElementsByTagName("name").item(0).getTextContent();
                    String age = element.getElementsByTagName("age").item(0).getTextContent();
                    System.out.println("Student ID: " + id);
                    System.out.println("Name: " + name);
                    System.out.println("Age: " + age);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. SAX parsing

SAX (Simple API for XML) parsing ialah kaedah penghuraian dipacu peristiwa yang merentasi dokumen XML secara berurutan dan membaca nod Mulakan dan tamatkan acara dan kendalikan acara ini melalui fungsi panggil balik.

Berikut ialah contoh kod menggunakan SAX untuk menghuraikan dokumen XML:

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SAXParserExample {
    public static void main(String[] args) {
        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();
            
            DefaultHandler handler = new DefaultHandler() {
                boolean bName = false;
                boolean bAge = false;
                
                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                    if (qName.equalsIgnoreCase("name")) {
                        bName = true;
                    }
                    
                    if (qName.equalsIgnoreCase("age")) {
                        bAge = true;
                    }
                }
                
                public void characters(char[] ch, int start, int length) throws SAXException {
                    if (bName) {
                        System.out.println("Name: " + new String(ch, start, length));
                        bName = false;
                    }
                    
                    if (bAge) {
                        System.out.println("Age: " + new String(ch, start, length));
                        bAge = false;
                    }
                }
            };
            
            parser.parse("example.xml", handler);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2 Jana dokumen XML

  1. Gunakan DOM untuk menjana dokumen XML

Berikut ialah contoh kod menggunakan DOM untuk menjana DOM. Dokumen XML:

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

public class DOMGenerator {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();
            
            Element root = document.createElement("students");
            document.appendChild(root);
            
            Element student = document.createElement("student");
            root.appendChild(student);
            
            Element name = document.createElement("name");
            name.appendChild(document.createTextNode("John"));
            student.appendChild(name);
            
            Element age = document.createElement("age");
            age.appendChild(document.createTextNode("20"));
            student.appendChild(age);
            
            // ... 追加更多的节点和数据
            
            // 保存为XML文件
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(document);
            StreamResult result = new StreamResult(new File("example.xml"));
            transformer.transform(source, result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. Jana menggunakan Dokumen XML JDOM

Berikut ialah contoh kod untuk menjana dokumen XML menggunakan JDOM:

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class JDOMGenerator {
    public static void main(String[] args) {
        try {
            Element root = new Element("students");
            Document document = new Document(root);
            
            Element student = new Element("student");
            root.addContent(student);
            
            Element name = new Element("name");
            name.setText("John");
            student.addContent(name);
            
            Element age = new Element("age");
            age.setText("20");
            student.addContent(age);
            
            // ... 添加更多节点和数据
            
            // 输出为XML字符串
            XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
            String xmlString = outputter.outputString(document);
            System.out.println(xmlString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Di atas ialah contoh mudah menghurai dan menjana dokumen XML menggunakan perpustakaan penghuraian XML di Jawa. Dalam pembangunan sebenar, kita boleh memilih perpustakaan penghuraian yang sesuai dan kaedah untuk memproses dokumen XML mengikut keperluan khusus untuk mengendalikan dan mengurus data dengan lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk menghuraikan dan menjana dokumen XML menggunakan perpustakaan parsing XML dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn