📜  Java XML教程(1)

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

Java XML教程

XML是一种标记语言,它是一种用于存储和传输数据的普遍格式。Java通过许多API支持XML编程,包括DOM、SAX和StAX等API。

XML基础

XML是用于数据交换和储存的标记语言,标识符为<tag>,通常包含属性和文本内容。

XML语法

XML文档有以下几个基本组件:

  • XML声明: 必须是文档的第一行,指示XML版本和编码。例如:
<?xml version="1.0" encoding="UTF-8"?>
  • 根元素(root element): 整个文档的起点,和其他元素平等。例如:
<bookstore>
    ...
</bookstore>
  • 元素(element): 由开始标签和结束标签组成,之间可以包含属性和文本内容。例如:
<book category="Cooking">
    <title>Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
</book>
  • 属性(attribute): 元素可以有零个或多个属性,每个属性由名称和值组成。例如:
<book category="Cooking">
    ...
</book>
  • 注释(comment): 用于描述XML文档,也可以用于暂时删除部分内容。例如:
<!-- This is a comment -->
XML解析

Java中提供了三种XML解析方法:DOM、SAX和StAX。每种方法具有不同的优缺点。

  • DOM: 将整个XML文档读入内存,并以树形结构表示。可以方便地查询或修改任何节点,但可能会消耗大量内存。
  • SAX: 逐行读取XML文档并解析。不需要存储整个文档到内存中,因此适合处理大型XML文件。但是,不支持随机访问,可能需要自己实现搜索算法来访问指定的数据。
  • StAX: 使用基于事件的模式,以流顺序处理XML文档。相对于SAX更容易使用,即使出现错误也能提供更多的错误信息。
XML操作

创建XML文档

创建一个新的XML文档,可以使用JAXP(Java API for XML Processing)中的DocumentBuilder类。例如:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();

// 创建根元素
Element root = doc.createElement("bookstore");
doc.appendChild(root);

// 创建元素和属性
Element book = doc.createElement("book");
book.setAttribute("category", "Cooking");

Element title = doc.createElement("title");
title.setTextContent("Everyday Italian");
book.appendChild(title);

// 将元素添加到根元素中
root.appendChild(book);

读取XML文档

使用DOM解析器来读取XML文档。可以使用DocumentBuilder类的parse()方法来解析文件,例如:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File("bookstore.xml"));

// 获取根元素
Element root = doc.getDocumentElement();

// 获取子元素
NodeList bookList = root.getElementsByTagName("book");
for (int i = 0; i < bookList.getLength(); i++) {
    Element book = (Element) bookList.item(i);

    // 获取属性
    String category = book.getAttribute("category");

    // 获取元素
    Element title = (Element) book.getElementsByTagName("title").item(0);
    String titleText = title.getTextContent();
}

修改XML文档

使用DOM解析器修改XML文档。例如:

NodeList bookList = doc.getElementsByTagName("book");
for (int i = 0; i < bookList.getLength(); i++) {
    Element book = (Element) bookList.item(i);

    // 修改属性
    book.setAttribute("category", "Travel");

    // 修改元素
    Element price = (Element) book.getElementsByTagName("price").item(0);
    price.setTextContent("25.00");
}
总结

本教程介绍了XML基础、XML解析和XML操作的相关内容。Java通过许多API支持XML编程,包括DOM、SAX和StAX等API。对于XML编程感兴趣的开发者们可以根据文档作进一步学习。

以上为Java XML教程。