📜  Python -XML处理(1)

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

Python - XML处理

XML是一种被广泛使用的格式,用于在不同应用程序之间传输数据。Python提供了许多库来处理XML数据,如ElementTreelxml等。在本文中,我们将探讨如何使用Python处理XML数据。

什么是XML?

XML指可扩展标记语言(eXtensible Markup Language),它是一种被广泛使用的格式,用于传输数据。

XML数据由标签和数据组成。标签包含数据,并指定数据类型和格式。它们也可以被嵌套在其他标签中,使得XML数据具有层次结构。

以下是一个简单的XML文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>
使用Python处理XML数据

Python提供了多种库来处理XML数据,如ElementTreelxml等。下面我们将使用ElementTree库来解析上述XML文件。

首先,我们需要导入ElementTree模块:

import xml.etree.ElementTree as ET

然后,我们可以使用ElementTree模块的parse函数来解析XML文件。解析后,我们可以使用getroot方法获取根元素,然后就可以对XML数据进行操作了。

tree = ET.parse('books.xml')
root = tree.getroot()
遍历XML数据

我们可以使用Element对象的iter方法来遍历XML数据。例如,以下代码将输出XML文件中的所有书籍:

for book in root.iter('book'):
    print(book.attrib)

输出结果如下:

{'category': 'COOKING'}
{'category': 'CHILDREN'}
获取子元素

我们可以使用Element对象的find方法来获取其子元素。例如,以下代码将输出第一本书的标题:

title = root.find("./book[1]/title")
print(title.text)

输出结果如下:

Everyday Italian
修改XML数据

我们可以修改Element对象的属性和文本内容来修改XML数据。例如,以下代码将修改第一本书的价格:

price = root.find("./book[1]/price")
price.text = '40.00'

在修改完XML数据后,我们可以使用ElementTree模块的write方法将修改后的XML数据写入文件中。

tree.write('books.xml')
创建XML数据

我们也可以使用ElementTree模块来创建XML数据。例如,以下代码将创建一个简单的XML文件:

from xml.etree.ElementTree import Element, SubElement, Comment, tostring

root = Element('bookstore')

book1 = SubElement(root, 'book')
book1.set('category', 'COOKING')

title1 = SubElement(book1, 'title')
title1.text = 'Everyday Italian'

author1 = SubElement(book1, 'author')
author1.text = 'Giada De Laurentiis'

year1 = SubElement(book1, 'year')
year1.text = '2005'

price1 = SubElement(book1, 'price')
price1.text = '30.00'

book2 = SubElement(root, 'book')
book2.set('category', 'CHILDREN')

title2 = SubElement(book2, 'title')
title2.text = 'Harry Potter'

author2 = SubElement(book2, 'author')
author2.text = 'J.K. Rowling'

year2 = SubElement(book2, 'year')
year2.text = '2005'

price2 = SubElement(book2, 'price')
price2.text = '29.99'

xml_str = tostring(root, encoding='utf8')
print(xml_str)

输出结果如下:

b'<bookstore><book category="COOKING"><title>Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category="CHILDREN"><title>Harry Potter</title><author>J.K. Rowling</author><year>2005</year><price>29.99</price></book></bookstore>'
小结

本文介绍了如何在Python中使用ElementTree模块处理XML数据。我们可以使用parse方法解析XML文件,使用iter方法遍历XML数据,使用find方法获取子元素,使用set方法修改属性,使用text属性修改文本,使用write方法将修改后的XML数据写入文件中,使用Element对象创建XML数据。