Python XML达人:手把手教你玩转XML文件操作

 2023-11-18    116  

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>
    •  标签:  

    原文链接:http://www.tpbz008.cn/post/45102.html

    =========================================

    http://www.tpbz008.cn/ 为 “电脑技术吧” 唯一官方服务平台,请勿相信其他任何渠道。

    热门标签
    最新留言
    友情链接