Maison  >  Article  >  Java  >  Comment analyser et générer des documents XML à l'aide de la bibliothèque d'analyse XML en Java ?

Comment analyser et générer des documents XML à l'aide de la bibliothèque d'analyse XML en Java ?

王林
王林original
2023-08-02 16:09:33902parcourir

Comment analyser et générer des documents XML à l'aide de la bibliothèque d'analyse XML en Java ?

XML (Extensible Markup Language) est un langage de balisage utilisé pour stocker et transmettre des données structurées. Dans le développement Java, nous rencontrons souvent le besoin d'analyser et de générer des documents XML. Java fournit de nombreuses bibliothèques d'analyse XML, telles que DOM, SAX et JDOM, etc. Ces bibliothèques peuvent nous aider à traiter facilement les documents XML.

Cet article expliquera comment utiliser la bibliothèque d'analyse XML en Java pour analyser et générer des documents XML, et fournira des exemples de code correspondants.

1. Analyser un document XML

  1. Analyse DOM

L'analyse DOM (Document Object Model) est une méthode d'analyse basée sur une structure arborescente. L'intégralité du document XML est chargée dans la mémoire pour former une structure arborescente. Nœuds d'arborescence pour lire et modifier le contenu XML.

Ce qui suit est un exemple de code pour analyser un document XML à l'aide de 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. Analyse SAX

L'analyse SAX (Simple API for XML) est une méthode d'analyse basée sur les événements qui parcourt séquentiellement le document XML et lit les nœuds. Démarrez et terminez des événements, et gérez ces événements via des fonctions de rappel.

Ce qui suit est un exemple de code d'utilisation de SAX pour analyser un document 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. Générer un document XML

  1. Utiliser DOM pour générer un document XML

Ce qui suit est un exemple de code d'utilisation de DOM pour générer un Document 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. Générer à l'aide d'un document XML JDOM

Ce qui suit est un exemple de code pour générer un document XML à l'aide de 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();
        }
    }
}

Ce qui précède est un exemple simple d'analyse et de génération d'un document XML à l'aide de la bibliothèque d'analyse XML. en Java. Dans le développement réel, nous pouvons choisir des bibliothèques et des méthodes d'analyse appropriées pour traiter les documents XML en fonction de besoins spécifiques afin d'exploiter et de gérer les données plus efficacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn