0
点赞
收藏
分享

微信扫一扫

java 读写XMl

杰克逊爱学习 2023-07-27 阅读 70

Java 读写XML

XML(可扩展标记语言)是一种常用的数据交换格式,被广泛应用于Web服务和配置文件等领域。在Java中,我们可以使用各种库和API来读写XML。本文将介绍如何使用Java代码读取和写入XML文件,并提供示例代码。

读取XML文件

Java提供了多种方式来读取XML文件,其中最常用的是DOM(文档对象模型)和SAX(简单API for XML)。以下是使用DOM和SAX读取XML文件的示例代码。

使用DOM读取XML文件

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

public class ReadXMLUsingDOM {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("example.xml");

            Element root = document.getDocumentElement();
            NodeList nodeList = root.getElementsByTagName("book");

            for (int i = 0; i < nodeList.getLength(); i++) {
                Node node = nodeList.item(i);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;
                    String title = element.getElementsByTagName("title").item(0).getTextContent();
                    String author = element.getElementsByTagName("author").item(0).getTextContent();
                    System.out.println("Title: " + title);
                    System.out.println("Author: " + author);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码使用DOM解析器读取名为"example.xml"的XML文件。首先,我们获取XML文档的根元素,然后遍历所有的"book"元素,并获取其子元素"title"和"author"的值。

使用SAX读取XML文件

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

public class ReadXMLUsingSAX {
    public static void main(String[] args) {
        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

            DefaultHandler handler = new DefaultHandler() {
                boolean isTitle = false;
                boolean isAuthor = false;

                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                    if (qName.equalsIgnoreCase("title")) {
                        isTitle = true;
                    }
                    if (qName.equalsIgnoreCase("author")) {
                        isAuthor = true;
                    }
                }

                public void characters(char ch[], int start, int length) throws SAXException {
                    if (isTitle) {
                        System.out.println("Title: " + new String(ch, start, length));
                        isTitle = false;
                    }
                    if (isAuthor) {
                        System.out.println("Author: " + new String(ch, start, length));
                        isAuthor = false;
                    }
                }
            };

            saxParser.parse("example.xml", handler);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码使用SAX解析器读取名为"example.xml"的XML文件。我们创建了一个继承自DefaultHandler的处理程序,重写了startElementcharacters方法以获取"title"和"author"的值。

写入XML文件

要将数据写入XML文件,我们可以使用Java提供的DOM或者第三方库如JDOM、XOM等。以下是使用DOM写入XML文件的示例代码。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.File;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

public class WriteXMLUsingDOM {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();

            Element root = document.createElement("library");
            document.appendChild(root);

            Element book = document.createElement("book");
            root.appendChild(book);

            Element title = document.createElement("title");
            title.appendChild(document.createTextNode("Java Programming"));
            book.appendChild(title);

            Element author = document.createElement("author");
            author.appendChild(document.createTextNode("John Doe"));
            book.appendChild(author);

            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(document);
            StreamResult result = new StreamResult(new File("example.xml
举报

相关推荐

0 条评论