程序员的知识教程库

网站首页 > 教程分享 正文

手把手教你学Python之 XML文件操作

henian88 2024-09-08 04:42:09 教程分享 9 ℃ 0 评论

XML(Extensible Markup Language)是一种可扩展的标记语言,它可以用来标记数据、定义数据类型,是一种常用来传输和存储数据的文本格式。XML文件由标签和文本组成,标签可以有属性和子标签,形成一个树形结构。

Python中有多种库可以用来解析XML文件,例如xml.etree.ElementTree、xml.dom.minidom和lxml等。这些库都提供了一些方法和类来操作XML文件中的元素、属性、文本等内容。下面是一些常用的库的介绍和代码示例:

  • xml.etree.ElementTree:这是一个内置的模块,它使用Element类来表示XML文件中的元素,使用ElementTree类来表示整个XML文件。它提供了一些函数和方法来创建、解析、遍历、修改和保存XML文件。例如:
# 导入模块
import xml.etree.ElementTree as ET

# 创建一个根元素
root = ET.Element("catalog")

# 添加一个子元素
book = ET.SubElement(root, "book", id="1")

# 添加子元素的属性和文本
book.set("genre", "fiction")
book.text = "Harry Potter"

# 创建一个ElementTree对象
tree = ET.ElementTree(root)

# 保存为XML文件
tree.write("catalog.xml", encoding="utf-8", xml_declaration=True)

上述代码会生成一个名为catalog.xml的文件,其内容如下:

<?xml version='1.0' encoding='utf-8'?>
<catalog>
  <book id="1" genre="fiction">Harry Potter</book>
</catalog>
  • xml.dom.minidom:这是一个内置的模块,它使用DOM(Document Object Model)接口来处理XML文件。它将XML文件解析成一个树形结构,每个节点都是一个对象,具有属性和方法。它提供了一些函数和方法来打开、解析、遍历、修改和保存XML文件。例如:
# 导入模块
import xml.dom.minidom

# 打开或创建一个XML文件
dom = xml.dom.minidom.parse("catalog.xml")

# 获取根元素
root = dom.documentElement

# 获取子元素列表
books = root.getElementsByTagName("book")

# 遍历子元素
for book in books:
    # 获取元素的属性值
    id = book.getAttribute("id")
    genre = book.getAttribute("genre")
    # 获取元素的文本值
    title = book.firstChild.data
    # 打印结果
    print(f"id: {id}, genre: {genre}, title: {title}")

上述代码会打印出如下结果:

id: 1, genre: fiction, title: Harry Potter
  • lxml:这是一个第三方的模块,它使用libxml2和libxslt库来处理XML文件。它提供了两种接口:ElementTree和lxml.etree。ElementTree接口与xml.etree.ElementTree模块兼容,但提供了更多的功能和性能。lxml.etree接口则提供了更多的高级功能,如XPath、XSLT、Schema等。例如:
  • # 导入模块
    from lxml import etree
    
    # 创建一个根元素
    root = etree.Element("catalog")
    
    # 添加一个子元素
    book = etree.SubElement(root, "book", id="1")
    
    # 添加子元素的属性和文本
    book.set("genre", "fiction")
    book.text = "Harry Potter"
    
    # 创建一个ElementTree对象
    tree = etree.ElementTree(root)
    
    # 保存为XML文件,并格式化输出
    tree.write("catalog.xml", encoding="utf-8", xml_declaration=True, pretty_print=True)
    

    上述代码会生成一个名为catalog.xml的文件,其内容如下:

    <?xml version='1.0' encoding='utf-8'?>
    <catalog>
      <book id="1" genre="fiction">Harry Potter</book>
    </catalog>

    Tags:

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表