在Python中处理XML的教程

在Python中处理XML的教程

什么是XML?

XML是一种常用的表示和交换数据的格式。它是一种标记语言,与HTML类似,但没有预定义的标签集。相反,XML允许开发者定义适合自己应用程序的自定义标签。

以下是一个示例XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="科幻">
    <title>深入浅出 Python</title>
    <author>皮利吉亚尼</author>
    <year>2021</year>
    <price>99.00</price>
  </book>
  <book category="编程">
    <title>The C Programming Language</title>
    <author>Brian W. Kernighan</author>
    <author>Dennis M. Ritchie</author>
    <year>1978</year>
    <price>39.00</price>
  </book>
</bookstore>

如何在Python中处理XML?

Python的标准库xml模块提供了一组用于处理XML的工具。下面是一些常用的类和函数:

ElementTree

ElementTree是Python中内置的一种用于处理XML文件的工具。它提供了一种方便的方式来读取和写入XML文件,并支持将XML文件转换为Python的对象模型。

以下是一个简单的例子:

import xml.etree.ElementTree as ET

# 从文件中读取XML数据
tree = ET.parse('books.xml')
root = tree.getroot()

# 遍历XML文档
for book in root.findall('book'):
    # 获取book的属性category的值
    category = book.get('category')
    # 获取book下面的子元素,例如title、author、year、price
    title = book.find('title').text
    author = book.find('author').text
    year = book.find('year').text
    price = book.find('price').text
    # 打印结果
    print(f'{category}: {title} - {author} ({year}) - {price}')

该示例读取并解析了一个名为books.xml的XML文件,并使用ElementTree库中的findallfind函数来访问XML节点,并生成Python表达式。

minidom

minidom是Python标准库中一个轻量级的XML解析库,可以用于处理小型XML文件。

以下是一个简单的例子:

from xml.dom import minidom

# 从文件中读取XML数据
xml_file = minidom.parse('books.xml')

# 获取根元素
root = xml_file.documentElement

# 遍历XML文档
for book in root.getElementsByTagName('book'):
    # 获取book的属性category的值
    category = book.getAttribute('category')
    # 获取book下面的子元素,例如title、author、year、price
    title = book.getElementsByTagName('title')[0].childNodes[0].data
    author = book.getElementsByTagName('author')[0].childNodes[0].data
    year = book.getElementsByTagName('year')[0].childNodes[0].data
    price = book.getElementsByTagName('price')[0].childNodes[0].data
    # 打印结果
    print(f'{category}: {title} - {author} ({year}) - {price}')

beautifulsoup4

beautifulsoup4是一个Python库,提供了一种方便的方式来解析XML和HTML文件,生成Python的对象模型。

以下是一个简单的例子:

from bs4 import BeautifulSoup

# 从文件中读取XML数据
with open('books.xml', 'r') as xml_file:
    soup = BeautifulSoup(xml_file, 'xml')

# 遍历XML文档
for book in soup.find_all('book'):
    # 获取book的属性category的值
    category = book['category']
    # 获取book下面的子元素,例如title、author、year、price
    title = book.title.text
    author = book.author.text
    year = book.year.text
    price = book.price.text
    # 打印结果
    print(f'{category}: {title} - {author} ({year}) - {price}')

示例1:创建XML文件

import xml.etree.ElementTree as ET

# 创建根节点
root = ET.Element('bookstore')

# 创建第一本书的节点
book1 = ET.SubElement(root, 'book')
book1.set('category', '科幻')

# 创建书的子节点
title1 = ET.SubElement(book1, 'title')
title1.text = '深入浅出 Python'

author1 = ET.SubElement(book1, 'author')
author1.text = '皮利吉亚尼'

year1 = ET.SubElement(book1, 'year')
year1.text = '2021'

price1 = ET.SubElement(book1, 'price')
price1.text = '99.00'

# 创建第二本书的节点
book2 = ET.SubElement(root, 'book')
book2.set('category', '编程')

# 创建书的子节点
title2 = ET.SubElement(book2, 'title')
title2.text = 'The C Programming Language'

author2_1 = ET.SubElement(book2, 'author')
author2_1.text = 'Brian W. Kernighan'

author2_2 = ET.SubElement(book2, 'author')
author2_2.text = 'Dennis M. Ritchie'

year2 = ET.SubElement(book2, 'year')
year2.text = '1978'

price2 = ET.SubElement(book2, 'price')
price2.text = '39.00'

# 将XML写入文件
tree = ET.ElementTree(root)
tree.write('new_books.xml', encoding='UTF-8', xml_declaration=True)

该示例创建了一个新的XML文件new_books.xml,并使用ElementTree库中的ElementSubElement函数创建了一个简单的XML文件,该文件包含两本书。

示例2:在一个XML文件中添加新的节点

import xml.etree.ElementTree as ET

# 从文件中读取XML数据
tree = ET.parse('books.xml')
root = tree.getroot()

# 创建第三本书的节点
book3 = ET.Element('book')
book3.set('category', '计算机')

# 创建书的子节点
title3 = ET.SubElement(book3, 'title')
title3.text = 'Python编程实战'

author3 = ET.SubElement(book3, 'author')
author3.text = 'David Beazley'

year3 = ET.SubElement(book3, 'year')
year3.text = '2015'

price3 = ET.SubElement(book3, 'price')
price3.text = '59.00'

# 将新的book添加到XML文件中
root.append(book3)

# 将XML写入文件
tree.write('new_books.xml', encoding='UTF-8', xml_declaration=True)

该示例灵活使用ElementSubElement函数来创建一个新的XML节点,并将其添加到现有的XML文件中。运行该代码后,新的书籍“Python编程实战”将添加到books.xml中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python中处理XML的教程 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • asp.net操作xml增删改示例分享

    当需要处理XML数据时,ASP.NET提供了一些强大的工具来进行增加、删除、修改和查询XML文件。下面我们将详细讲解ASP.NET操作XML增删改的完整攻略: 1. 创建XML文档 在ASP.NET中,创建XML文档需要使用System.Xml.XmlDocument类。下面是一个简单的示例,它创建并填充了一个名为“catalog”的XML文档: using…

    html 2023年5月30日
    00
  • HTML5新增的表单元素和属性实例解析

    HTML5新增了一些表单元素和属性,提高了用户使用表单的体验和开发者对表单验证和数据收集的支持。本文将详细讲解这些新增的表单元素和属性。 一、新增的表单元素 1.1 datalist元素 datalist元素用于定义用户可以从中选择输入值的选项列表。它可以与input元素的list属性一起使用,让用户从预定义的选项中选择一个值,而不是手动输入。示例如下: &…

    html 2023年5月30日
    00
  • Java开发中读取XML与properties配置文件的方法

    下面是Java开发中读取XML与properties配置文件的方法的完整攻略。 读取XML配置文件的方法 步骤一:导入相关的包 import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; impo…

    html 2023年5月30日
    00
  • 打开电脑文件部分文字显示为乱码该怎么办?

    打开电脑文件部分文字显示为乱码,常见于文件格式不被当前系统支持、文件编码不一致等情况,以下是解决方案: 1. 确认文件编码 打开乱码文件时,可先尝试使用正确编码打开可以查看的部分。如打开的是txt文件,可在文本编辑器中选择“转换文本编码” 或 “另存为”功能,指定一个能正常显示文字的编码格式,如utf-8、gbk等,这样就能打开并查看部分内容。如果文件是wo…

    html 2023年5月31日
    00
  • 抖音第二个小号怎么实名认证?怎么开直播

    以下是“抖音第二个小号怎么实名认证?怎么开直播”的完整攻略: 抖音第二个小号怎么实名认证?怎么开直播? 抖音是一个非常流行的短视频社交平台,用户可以在该平台上发布短视频、开直播等。有时候,用户需要使用第二个小号进行操作,但是第二个小号需要进行实名认证才能开直播。下面是一些关于抖音第二个小号实名认证和开直播的教程,可以帮助用户完成这些操作。 教程1:抖音第二个…

    html 2023年5月18日
    00
  • 怎么申请社保关系转移? 支付宝社保异地转移的技巧

    以下是关于申请社保关系转移和支付宝社保异地转移的攻略: 怎么申请社保关系转移? 社保关系转移是指在不同城市工作的人员将其社保关系从原工作地转移至新工作地的一项服务。以下是详细的攻略: 登录社保网站:首先,登录社保网站,进入“社保关系转移”页面。 填写申请表:在“社保关系转移”页面中,填写申请表。您需要提供个人信息、原工作地社保信息、新工作地社保信息等。 提交…

    html 2023年5月17日
    00
  • 怎么在快手开直播赚钱?怎么赚钱?

    以下是“怎么在快手开直播赚钱?怎么赚钱?”的完整攻略: 怎么在快手开直播赚钱?怎么赚钱? 快手是一款非常流行的短视频平台,用户可以在平台上发布自己的短视频,并通过直播等方式赚钱。下面是在快手开直播赚钱的攻略。 成为快手达人 成为快手达人是获得收益的前提条件之一。快手达人是指在快手上有一定影响力的用户,他们的短视频和直播可以吸引更多的用户观看和关注。成为快手达…

    html 2023年5月18日
    00
  • asp控制xml数据库的经典代码

    首先,要使用ASP控制XML数据库,需要有基础的ASP编程知识和使用XML的经验。以下是ASP控制XML数据库的经典代码攻略: 准备工作 创建XML数据库文件并在其中添加数据,例如以下代码创建一个名为“test.xml”的文件,并添加一个名为“person”的元素及其属性: <?xml version="1.0" encoding=…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部