📅  最后修改于: 2023-12-03 14:48:38.893000             🧑  作者: Mango
XML(Extensible Markup Language)是一种标记语言,用来描述数据。XML 的特点是可扩展性和平台无关性。常常被用来作为数据传输和存储格式。XML 数据可以被浏览器和其他应用程序处理。
XML 树结构是 XML 数据的一种表现形式,它由结点和属性组成。结点可以是元素(element)、文本、注释或处理指令(Processing Instruction)。属性可以是描述元素的特性(attribute)。
元素是 XML 数据的主要组成部分,它由标签、内容和结束标志组成。元素可以包含其他元素、文本、注释和处理指令。
<book>
<title>XML实战</title>
<author>张三</author>
<publisher>人民邮电出版社</publisher>
<price>59.0</price>
</book>
其中,<book>
, <title>
, <author>
等是标签,XML实战
, 张三
等是元素内容,</book>
是结束标志。
元素可以包含一些描述特定信息的属性。属性通常用于标注元素的特殊属性。属性的定义在元素的开始标记中,使用一个或多个键值对表示。键值对之间使用空格或制表符分隔。键和值之间使用等号分隔。
<book id="bk001">
<title>XML实战</title>
<author>张三</author>
<publisher>人民邮电出版社</publisher>
<price currency="CNY">59.0</price>
</book>
其中,id
和 currency
是属性名,bk001
和 CNY
是属性值。
文本节点包含元素的文本值或者属性的值。文本节点被包含在开始标记和结束标记之间。
<description>
XML是一种标记语言。
</description>
注释节点是一个单独的节点类型,包含有助于理解文档结构的注释信息。注释通常用于文档标记的描述。
<!--
This is a comment.
It will not be displayed in the output
-->
处理指令用于指定文档中应该进行的处理。它为处理软件提供了处理文档的指导。
<?xml version="1.0" encoding="UTF-8"?>
此处理指令指示 XML 解析器用指定的编码处理 XML 文档。
程序可以使用许多不同的方式来解析 XML 树结构。在 Java 中,有许多 XML 解析器可供使用,例如 SAX、DOM 和 StAX 等。以下是使用 DOM 解析器的 Java 代码示例:
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 XmlParserDemo {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("books.xml");
NodeList books = doc.getElementsByTagName("book");
for (int i = 0; i < books.getLength(); i++) {
Node book = books.item(i);
if (book.getNodeType() == Node.ELEMENT_NODE) {
Element bookElement = (Element) book;
String id = bookElement.getAttribute("id");
String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
String publisher = bookElement.getElementsByTagName("publisher").item(0).getTextContent();
String price = bookElement.getElementsByTagName("price").item(0).getTextContent();
System.out.println("ID : " + id);
System.out.println("Title : " + title);
System.out.println("Author : " + author);
System.out.println("Publisher : " + publisher);
System.out.println("Price : " + price + " CNY");
}
}
}
}
以上程序会解析下面的 books.xml 文件:
<books>
<book id="bk001">
<title>XML实战</title>
<author>张三</author>
<publisher>人民邮电出版社</publisher>
<price currency="CNY">59.0</price>
</book>
<book id="bk002">
<title>Java编程思想</title>
<author>李四</author>
<publisher>机械工业出版社</publisher>
<price currency="CNY">89.0</price>
</book>
</books>
XML 树结构是在应用程序间传递数据的一种标准形式。它基于层次结构,提供了一种通用的、可扩展的方法,用以表示结构化数据。在今天的 Web 应用,其作用尤为重要。程序员需要了解 XML 树结构及其解析技术,以便更好地处理和呈现数据。