Python 解析XML文件

下面是Python解析XML文件的完整攻略。

简介

XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。Python提供了许多库来解析XML文件,其中较为流行的包括ElementTree、minidom等。本文将介绍如何使用ElementTree解析XML文件。

安装

在使用ElementTree前,需要先安装ElementTree库。可以使用pip进行安装:

pip install elementtree

解析XML

使用ElementTree解析XML的基本流程如下:

  1. 导入ElementTree库。

python
import xml.etree.ElementTree as ET

  1. 使用parse函数解析XML文件。

python
tree = ET.parse('example.xml')

  1. 获取根节点。

python
root = tree.getroot()

  1. 遍历子节点,获取XML文件中的信息。

python
for child in root:
print(child.tag, child.attrib)

其中,tag属性表示节点名称,attrib属性表示节点属性。

示例一:解析简单XML文件

考虑以下XML文件example.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>

以下是解析XML文件的Python代码:

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example.xml')

# 获取根节点
root = tree.getroot()

# 遍历子节点,并打印信息
for child in root:
    print(child.tag, child.attrib)
    for sub_child in child:
        print(f"\t{sub_child.tag}: {sub_child.text}")

输出结果如下:

book {'category': 'COOKING'}
    title: Everyday Italian
    author: Giada De Laurentiis
    year: 2005
    price: 30.00
book {'category': 'CHILDREN'}
    title: Harry Potter
    author: J.K. Rowling
    year: 2005
    price: 29.99

可以看到,代码实现了解析并遍历XML文件,获取了每本书的信息。

示例二:解析复杂XML文件

考虑以下XML文件example2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<students>
  <student id="001" name="Alice">
    <gender>Female</gender>
    <age>18</age>
    <courses>
      <course>Math</course>
      <course>English</course>
      <course>History</course>
    </courses>
  </student>
  <student id="002" name="Bob">
    <gender>Male</gender>
    <age>19</age>
    <courses>
      <course>Physics</course>
      <course>Chemistry</course>
    </courses>
  </student>
</students>

以下是解析XML文件的Python代码:

import xml.etree.ElementTree as ET

# 解析XML文件
tree = ET.parse('example2.xml')

# 获取根节点
root = tree.getroot()

# 遍历子节点,并打印信息
for child in root:
    print(child.tag, child.attrib)
    for sub_child in child:
        if sub_child.tag == 'courses':
            courses = [c.text for c in sub_child]
            print(f"\tcourses: {', '.join(courses)}")
        else:
            print(f"\t{sub_child.tag}: {sub_child.text}")

输出结果如下:

student {'id': '001', 'name': 'Alice'}
    gender: Female
    age: 18
    courses: Math, English, History
student {'id': '002', 'name': 'Bob'}
    gender: Male
    age: 19
    courses: Physics, Chemistry

在这个例子中,XML文件较为复杂,包含了学生的基本信息以及其选修的课程。代码根据节点名称判断是否为课程节点,如果是则提取出每个课程名并输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 解析XML文件 - Python技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • Python爬虫练习汇总

    Python爬虫练习汇总攻略 Python爬虫是一种抓取网络数据的技术,也是现在比较热门的技术之一。学习Python爬虫,需要具备一定的编程基础和网络基础。下面是Python爬虫练习汇总攻略: 了解爬虫基础 在学习Python爬虫之前,需要先了解一些基础的概念或知识: 爬虫是什么?指的是通过网络来抓取网页数据的程序,可以获取各种网络数据,如HTML、XML、…

    python 2023年5月14日
    00
  • plt.title()中文无法显示的问题解决

    关于“plt.title()中文无法显示的问题解决”的解决攻略,我可以提供以下两条示例进行说明。 首先,我们需要在Matplotlib中添加中文字体的支持。在Windows系统上,可以使用以下步骤进行设置: 首先,需要下载对应的中文字体文件,一般为.ttf格式。以SimHei字体为例,在字体库中搜索“SimHei”,下载SimHei.ttf文件即可。 把Si…

    python 2023年6月6日
    00
  • pandas中的Timestamp只保留日期不显示时间

    首先,我们需要明确 Timestamp 是 Pandas 中一个用于处理时间序列的数据类型,它表示的是某个具体的时间点。默认情况下,Timestamp 会同时保留日期和时间信息。如果你想保留日期信息,移除时间信息,可以通过下列方法实现: import pandas as pd # 创建一个包含日期和时间的 Timestamp 对象 ts = pd.Times…

    python 2023年6月2日
    00
  • python中字典的常见操作总结1

    Python中字典的常见操作总结 Python中的字典(dictionary)是一种可变容器模型,可存储任意类型对象。 字典中的元素由键(key)和值(value)组成,它们是一一对应的,用冒号分隔。字典用大括号 {} 包围,键值对之间用逗号隔开。 下面是常见的字典操作: 创建字典 可以使用以下方法来创建一个字典: dict1 = {"name&q…

    python 2023年5月13日
    00
  • Python3.5面向对象编程图文与实例详解

    下面我来为您详细讲解“Python3.5面向对象编程图文与实例详解”的完整攻略。 什么是面向对象编程 面向对象编程(Object Oriented Programming,简称 OOP)是一种程序设计思想,它将程序中的实体(称为对象)视为相互作用的个体,通过定义类和对象来实现对实体的描述和处理。在 Python 中,对象可以是一些数据,也可以是一些方法,而类…

    python 2023年5月30日
    00
  • python转换摩斯密码示例

    这里我为你提供一份“python转换摩斯密码示例”的完整攻略,包括两条示例说明: 示例一:转换单词 首先需要导入所需的库: python import string 接下来需要定义摩斯密码表,为方便起见,我们可以先将英文字母和对应的摩斯密码用字典方式保存: python morse_dict = { ‘a’: ‘.-‘, ‘b’: ‘-…’, ‘c’: …

    python 2023年6月5日
    00
  • python 提取文件的小程序

    下面是详细讲解“Python 提取文件的小程序”的完整攻略。 1. 确定文件路径 首先需要确定要提取的文件在哪个地方。可以使用 Python 的 os 模块中的 getcwd() 函数获取当前工作目录,然后再通过 os.path.join() 拼接出完整的文件路径。 示例代码: import os file_name = "example.txt&…

    python 2023年5月18日
    00
  • 编写同时兼容Python2.x与Python3.x版本的代码的几个示例

    编写既兼容Python2.x又兼容Python3.x的代码需要遵循以下几个规则: 使用print()函数代替print语句 在Python 2.x中,print是一个语句而非函数,因此可以直接使用print “Hello World!”这种形式输出。在Python 3.x中,print变成了一个函数,因此必须使用print(“Hello World!”)这种…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部