📜  从 XML 文档中提取内容的Java程序(1)

📅  最后修改于: 2023-12-03 15:06:32.837000             🧑  作者: Mango

从XML文档中提取内容的Java程序
简介

XML是一种广泛使用的数据格式,Java程序员常常需要从XML文档中提取内容。本文将介绍如何使用Java程序从XML文档中提取内容。

使用DOM解析XML文档

DOM(文档对象模型)是一种解析XML文档的方法,可以将整个XML文档加载到内存中,然后通过节点(节点是XML文档的元素)之间的关系遍历整个文档树。

以下是一个简单的Java程序,使用DOM解析XML文档:

import java.io.File;
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 XmlParser {
    public static void main(String[] args) {
        try {
            File inputFile = new File("input.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(inputFile);
            doc.getDocumentElement().normalize();

            NodeList nodeList = doc.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();
                    String price = element.getElementsByTagName("price").item(0).getTextContent();
                    System.out.println("Book: " + title + " by " + author + ", price: $" + price);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码使用DocumentBuilderFactoryDocumentBuilder将XML文件加载到内存中,将XML的根元素整理为doc对象,然后通过getElementsByTagName()方法获得节点,遍历每个book节点,从中获取title,author,price的值。

使用JDOM解析XML文档

JDOM是另一种解析XML文档的方法,与DOM相比更具有面向对象的特征。它可以将XML文档转换为JDOM对象模型,从而可以方便地访问XML文档的元素和属性。

以下是一个简单的Java程序,使用JDOM解析XML文档:

import java.io.File;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;

public class XmlParser {
    public static void main(String[] args) {
        try {
            File inputFile = new File("input.xml");
            SAXBuilder saxBuilder = new SAXBuilder();
            Document document = saxBuilder.build(inputFile);
            Element root = document.getRootElement();

            List<Element> bookList = root.getChildren("book");
            for (Element bookElement : bookList) {
                String title = bookElement.getChildText("title");
                String author = bookElement.getChildText("author");
                String price = bookElement.getChildText("price");
                System.out.println("Book: " + title + " by " + author + ", price: $" + price);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码使用SAXBuilder将XML文件加载到内存中,然后将XML文件整理为document对象,通过getChildren()方法获得子元素,遍历每个book节点,从中获取title,author,price的值。

结论

本文介绍了如何使用DOM和JDOM两种方法从XML文档中提取内容的Java程序。DOM解析XML文档的内存开销较大,但可以访问文件中的任意节点;JDOM解析XML文档的内存开销较小,但API相对较少,较难处理复杂的XML文档。

(完)