📜  Xml树结构(1)

📅  最后修改于: 2023-12-03 14:48:38.893000             🧑  作者: Mango

XML 树结构

XML(Extensible Markup Language)是一种标记语言,用来描述数据。XML 的特点是可扩展性和平台无关性。常常被用来作为数据传输和存储格式。XML 数据可以被浏览器和其他应用程序处理。

XML 树结构是 XML 数据的一种表现形式,它由结点和属性组成。结点可以是元素(element)、文本、注释或处理指令(Processing Instruction)。属性可以是描述元素的特性(attribute)。

XML 树结构的组成部分
元素(Elements)

元素是 XML 数据的主要组成部分,它由标签、内容和结束标志组成。元素可以包含其他元素、文本、注释和处理指令。

<book>
    <title>XML实战</title>
    <author>张三</author>
    <publisher>人民邮电出版社</publisher>
    <price>59.0</price>
</book> 

其中,<book><title><author> 等是标签,XML实战张三 等是元素内容,</book> 是结束标志。

属性(Attributes)

元素可以包含一些描述特定信息的属性。属性通常用于标注元素的特殊属性。属性的定义在元素的开始标记中,使用一个或多个键值对表示。键值对之间使用空格或制表符分隔。键和值之间使用等号分隔。

<book id="bk001">
    <title>XML实战</title>
    <author>张三</author>
    <publisher>人民邮电出版社</publisher>
    <price currency="CNY">59.0</price>
</book> 

其中,idcurrency 是属性名,bk001CNY 是属性值。

文本(Text)

文本节点包含元素的文本值或者属性的值。文本节点被包含在开始标记和结束标记之间。

<description>
    XML是一种标记语言。
</description>
注释(Comments)

注释节点是一个单独的节点类型,包含有助于理解文档结构的注释信息。注释通常用于文档标记的描述。

<!--
    This is a comment.
    It will not be displayed in the output
-->
处理指令(Processing Instruction)

处理指令用于指定文档中应该进行的处理。它为处理软件提供了处理文档的指导。

<?xml version="1.0" encoding="UTF-8"?>

此处理指令指示 XML 解析器用指定的编码处理 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 树结构及其解析技术,以便更好地处理和呈现数据。