📅  最后修改于: 2023-12-03 15:00:31.645000             🧑  作者: Mango
DOM解析器是一种解析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解析器可以将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模块。