ホームページ >Java >&#&チュートリアル >Java の XML 解析ライブラリを使用して XML ドキュメントを解析および生成するにはどうすればよいですか?

Java の XML 解析ライブラリを使用して XML ドキュメントを解析および生成するにはどうすればよいですか?

王林
王林オリジナル
2023-08-02 16:09:33975ブラウズ

Java で XML 解析ライブラリを使用して XML ドキュメントを解析および生成するにはどうすればよいですか?

XML (Extensible Markup Language) は、構造化データの保存と送信に使用されるマークアップ言語です。 Java 開発では、XML ドキュメントを解析して生成する必要がよく発生します。 Java は、DOM、SAX、JDOM などの多くの XML 解析ライブラリを提供します。これらのライブラリは、XML ドキュメントを簡単に処理するのに役立ちます。

この記事では、Java の XML 解析ライブラリを使用して XML ドキュメントを解析および生成する方法を紹介し、対応するコード例を示します。

1. XML 文書の解析

  1. DOM 解析

DOM (Document Object Model) 解析は、ツリー構造に基づいた解析手法です。 XML ドキュメントはメモリにロードされてツリー構造を形成し、ツリーのノードを操作することによって XML コンテンツが読み取られ、変更されます。

次は、DOM を使用して XML ドキュメントを解析するコード例です:

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 解析

SAX (Simple API for XML) 解析これは、XML ドキュメントを順次走査し、ノードの開始イベントと終了イベントを読み取り、コールバック関数を通じてこれらのイベントを処理するイベント駆動型の解析メソッドに基づくメソッドです。

次は、SAX を使用して 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. XML ドキュメントの生成

  1. DOM を使用して XML ドキュメントを生成

次は、DOM を使用して 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();
        }
    }
}
    #JDOM を使用して XML ドキュメントを生成する
次のは、JDOM を使用して XML ドキュメントを生成するコード例です。

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();
        }
    }
}

上記は、Java の XML 解析ライブラリを使用して XML ドキュメントを解析および生成する簡単な例です。実際の開発では、データをより効率的に操作および管理するために、特定のニーズに応じて XML ドキュメントを処理するための適切な解析ライブラリとメソッドを選択できます。

以上がJava の XML 解析ライブラリを使用して XML ドキュメントを解析および生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。