Java で XML 解析ライブラリを使用して XML ドキュメントを解析および生成するにはどうすればよいですか?
XML (Extensible Markup Language) は、構造化データの保存と送信に使用されるマークアップ言語です。 Java 開発では、XML ドキュメントを解析して生成する必要がよく発生します。 Java は、DOM、SAX、JDOM などの多くの XML 解析ライブラリを提供します。これらのライブラリは、XML ドキュメントを簡単に処理するのに役立ちます。
この記事では、Java の XML 解析ライブラリを使用して XML ドキュメントを解析および生成する方法を紹介し、対応するコード例を示します。
1. XML 文書の解析
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(); } } }
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 ドキュメントの生成
次は、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(); } } }
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 ドキュメントを解析および生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。