Rumah >Java >javaTutorial >Apakah alat penghuraian XML yang biasa digunakan dalam perpustakaan fungsi Java?

Apakah alat penghuraian XML yang biasa digunakan dalam perpustakaan fungsi Java?

WBOY
WBOYasal
2024-05-02 13:51:011006semak imbas

Alat penghuraian XML: JAXB: Menjana kelas Java, mengautomasikan XML dan penukaran objek. DOM: API untuk mengakses dan memanipulasi XML, menyediakan kawalan berbutir. SAX: penghurai dipacu peristiwa, prestasi tinggi tetapi sukar dikawal. StAX: Penghurai berasaskan aliran yang menggabungkan SAX dan DOM yang terbaik.

Java 函数库中都有哪些常用 XML 解析工具?

Alat penghuraian XML dalam perpustakaan Java

Java menyediakan pelbagai kit alat untuk penghuraian XML untuk membaca, menulis dan mengubah suai dokumen XML. Berikut adalah yang paling biasa digunakan:

1. JAXB (Java Schema Binding XML)

  • Alat penjanaan kod yang menjana kelas Java untuk skema XML (XSD).
  • Automasikan penukaran antara dokumen XML dan objek Java.

Contoh kod:

// 生成 Java 类
JAXBContext context = JAXBContext.newInstance(Customer.class);
SchemaOutputResolver outputResolver = new SchemaOutputResolver() {
    @Override
    public Result createOutput(String namespaceUri, String suggestedFileName) {
        return new StreamResult(new File("customer.xsd"));
    }
};
context.generateSchema(outputResolver);

// 绑定 XML 文档到 Java 对象
Unmarshaller unmarshaller = context.createUnmarshaller();
Customer customer = (Customer) unmarshaller.unmarshal(new File("customer.xml"));

2. DOM (Model Objek Dokumen)

  • Standard W3C yang mentakrifkan API untuk mengakses dan memanipulasi dokumen XML.
  • Memberikan kawalan yang lebih baik ke atas dokumen XML, tetapi pada kos kerumitan yang lebih besar.

Contoh kod:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("document.xml"));
NodeList nodes = document.getElementsByTagName("name");

3. SAX (API Mudah untuk XML)

  • Penghurai XML dipacu peristiwa yang membaca dokumen XML satu demi satu dalam bentuk strim.
  • Memberikan prestasi yang lebih baik, tetapi model pengendalian acara menjadikan kawalan lebih sukar.

Sampel kod:

XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(new MyContentHandler());
reader.parse(new InputSource(new File("document.xml")));

class MyContentHandler implements ContentHandler {
    @Override
    public void startElement(String uri, String localName, String qName, Attributes atts) { /* ... */ }
    @Override
    public void characters(char[] ch, int start, int length) { /* ... */ }
    // ...其他方法
}

4. StAX (API Aliran untuk XML)

  • Penghurai XML berasaskan strim yang memberikan kelebihan SAX dan DOM.
  • Gunakan iterator untuk melintasi dokumen XML, menyediakan pemprosesan yang lebih fleksibel.

Contoh Kod:

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(new File("document.xml"));
while (reader.hasNext()) {
    switch (reader.getEventType()) {
        case XMLStreamConstants.START_ELEMENT:
            System.out.println(reader.getLocalName());
            break;
        case XMLStreamConstants.CHARACTERS:
            System.out.println(reader.getText());
            break;
        // ...其他事件
    }
    reader.next();
}

Pilih alat penghuraian yang sesuai berdasarkan keperluan khusus anda. Untuk transformasi automatik dan pengikatan data, JAXB ialah pilihan yang baik. Untuk kawalan dokumen yang lebih halus, DOM mungkin lebih sesuai. SAX dan StAX memberikan prestasi yang lebih baik tetapi memerlukan kemahiran pengaturcaraan yang lebih maju.

Atas ialah kandungan terperinci Apakah alat penghuraian XML yang biasa digunakan dalam perpustakaan fungsi 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