📜  DOM解析器-解析XML文档(1)

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

DOM解析器-解析XML文档

DOM解析器是一种解析XML文档的工具,它可以将XML文档解析成一个树形结构,程序员可以遍历这个树形结构以获取文档中的数据。

XML文档

XML(Extensible Markup Language)是一种用于描述数据的标记语言,它可以被用来存储、传输和展示数据,被广泛应用于Web开发和移动应用程序开发。

一个XML文档由标记、属性和数据组成。标记将数据分组,并对数据进行命名和描述。属性为标记提供更多的信息。数据则是标记中的内容和值。

下面是一个简单的XML文档的例子:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>
DOM解析器

DOM解析器可以将XML文档解析成一个DOM(Document Object Model)对象,程序员可以通过操作DOM对象来访问、修改XML文档的内容。

DOM对象是一个树形结构,它的根节点是Document,它包含了其他所有节点。其他节点包括元素节点、文本节点、注释节点等。元素节点又分为普通元素节点和属性节点。

程序员可以用DOM解析器将XML文档解析成DOM对象,然后按照节点类型和关系来遍历DOM树,以获取XML文档中的数据。

Python提供了多种DOM解析器,其中最常用的是基于标准W3C DOM规范的xml.dom.minidom模块。

下面是一个使用xml.dom.minidom模块解析XML文档的例子:

import xml.dom.minidom

# 使用minidom解析器打开XML文档
dom = xml.dom.minidom.parse('books.xml')

# 获取文档元素对象
root = dom.documentElement

# 遍历book标签
books = root.getElementsByTagName('book')
for book in books:
    # 获取book标签的属性category
    category = book.getAttribute('category')
    print('category:', category)

    # 获取title标签的文本
    title = book.getElementsByTagName('title')[0]
    title_text = title.childNodes[0].data
    print('title:', title_text)

    # 获取author标签的文本
    author = book.getElementsByTagName('author')[0].childNodes[0].data
    print('author:', author)

    # 获取year标签的文本
    year = book.getElementsByTagName('year')[0].childNodes[0].data
    print('year:', year)

    # 获取price标签的文本
    price = book.getElementsByTagName('price')[0].childNodes[0].data
    print('price:', price)

上面的代码使用了xml.dom.minidom模块解析了一个books.xml的XML文档,并获取了它的数据,最后输出在控制台。

结论

DOM解析器是一种解析XML文档的工具,它可以将XML文档解析成DOM对象。程序员可以通过遍历DOM对象来获取XML文档中的数据。Python提供了多种DOM解析器,其中最常用的是基于标准W3C DOM规范的xml.dom.minidom模块。