Python使用lxml解析XML格式化数据

Python使用lxml解析XML格式化数据

  • 1. 效果图
  • 2. 源代码
  • 参考

方法一:无脑读取文件,遇到有关键词的行再去解析获取值
方法二:利用lxml等库,解析格式化数据,批量获取标签及其值

这篇博客介绍第2种办法,以菜鸟教程中的俩个xml文档为例进行解析;
https://www.runoob.com/try/xml/cd_catalog.xml
https://www.runoob.com/try/xml/books.xml

1. 效果图

cd_catalog.xml原始文件如下:
在这里插入图片描述

解析cd_catalog.xml后按顺序打印如下:
在这里插入图片描述

book.xml原始文件如下:
在这里插入图片描述

解析books.xml效果图如下:
在这里插入图片描述

2. 源代码

# parseXml.py
# 解析cd_catalog.xml,book.xmlfrom xml.etree import ElementTree as ETdef readBookXml(file):# 直接读取xml文件,形成ElementTree结构tree = ET.parse(file)root = tree.getroot()  # 获取根元素for i, child in enumerate(root):  # 遍历子元素print(i, child.tag, child.text, child.attrib)  # 输出子元素的标签和属性值for j in range(len(child)):print('\t', j, child[j].tag, child[j].text, child[j].attrib)  # 输出子元素中的标签及属性值# 获取XML文档的根元素root = tree.getroot()# 查找具有指定标签的第一个子元素element = root.find('book')# 查找具有指定标签的所有子元素books = root.findall('book')print(len(books))for i, book in enumerate(books):print(i, book.tag, book.text, book.attrib)  # 输出子元素的标签和属性值for j in range(len(book)):print('\t', j, book[j].tag, book[j].text, book[j].attrib)  # 输出子元素中的标签及属性值def readCatalogXml(file):# 直接读取xml文件,形成ElementTree结构tree = ET.parse(file)root = tree.getroot()  # 获取根元素for i, child in enumerate(root):  # 遍历子元素print(i, child.tag, child.text, child.attrib)  # 输出子元素的标签和属性值for j in range(len(child)):print('\t', j, child[j].tag, child[j].text, child[j].attrib)  # 输出子元素中的标签及属性值# 获取XML文档的根元素root = tree.getroot()# 查找具有指定标签的第一个子元素element = root.find('CD')# 查找具有指定标签的所有子元素books = root.findall('CD')print(len(books))for i, book in enumerate(books):print(i, book.tag)  # 输出子元素的标签for j in range(len(book)):print('\t', j, book[j].tag, book[j].text)  # 输出子元素中的标签及属性值file = 'test/books.xml'
readBookXml(file)file = 'test/cd_catalog.xml'
readCatalogXml(file)

参考

  • https://blog.csdn.net/qq233325332/article/details/130799948
  • https://blog.csdn.net/weixin_43856625/article/details/134775566

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/527728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vivado Repository IP Catalog 释疑

Vivado软件自带了一个IP核仓库,可以在IP Catalog界面查看。 在IP目录界面,依次给出了每个IP核的Name(名称),Interface(接口),State(状态),License(许可证)和VLNV(标识符)。 Interface表示IP核的…

考研经验|如何从考研失败中走出来?

对我来说,太丢人了 其实我在本科的时候在同学眼中,一直很优秀,每年奖学金必有我的,国家励志奖学金,国家奖学金,这种非常难拿的奖学金,我也拿过,本科期间学校有一个公费去新西兰留学的…

数据分析-Pandas两种分组箱线图比较

数据分析-Pandas两种分组箱线图比较 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&am…

Java线程6种状态和工作原理详解,Java创建线程的4种方式

Java线程6种状态和工作原理详解,Java创建线程的4种方式 目录 一、Java线程的六种状态 二、Java线程是如何工作的? 三、BLOCKED 和 WAITING 的区别 四、start() 和 run() 源码分析 五、Java创建线程的所有方式和代码详解 1. 继承Thread类 2. 实现…

脚手架cli快速创建Vue2/Vue3项目

前言: 本文的nodejs版本是14.21.3 第一步 进入cmd窗口 1、全局安装webpack npm install webpack-g, npm install webpack-g 第二步 2、全局安装vue脚手架 npm install -g vue/cli 第三步 3、初始化vue项目 (vue脚手架使用webpack模…

考研常识 | 专业硕士与学术硕士的11个区别

专业硕士与学术硕士的11个区别 对于考研学子而言,了解专业学位与学术学位的区别,是报考的第一步。学术学位研究生一般都是全日制的,而专业学位研究生的学习方式还分为即全日制与非全日制两种。这篇文章将带大家认识全日制专业学位与全日制学术…

Python docx学习笔记

个人学习笔记。 1 工具介绍 python-docx 是用于创建可修改 微软 Word 的一个 python 库,提供全套的 Word 操作,是最常用的 Word 工具。 1.1 基本概念 Document:是一个 Word 文档 对象,不同于 VBA 中 Worksheet 的概念&#xf…

Python 一步一步教你用pyglet制作汉诺塔游戏

目录 汉诺塔游戏 1. 抓取颜色 2. 绘制圆盘 3. 九层汉塔 4. 绘制塔架 5. 叠加圆盘 6. 游戏框架 汉诺塔游戏 汉诺塔(Tower of Hanoi),是一个源于印度古老传说的益智玩具。这个传说讲述了大梵天创造世界的时候,他做了三根金刚…

Python实现线性查找算法

Python实现线性查找算法 以下是使用 Python 实现线性查找算法的示例代码: def linear_search(arr, target):"""线性查找算法:param arr: 要搜索的数组:param target: 目标值:return: 如果找到目标值,返回其索引;否则返回 -1…

力扣中档题的简单写法:在链表中插入最大公约数

其实暴力遍历开数组也可以,但不如以下新建链表块的方法简单 int FindCommDivisor(int num1, int num2) {int n;int i;n fmin(num1, num2);for (i n; i > 1; i--) {if (num1 % i 0 && num2 % i 0) {return i;}}return 0; }struct ListNode *insertGr…

【考研数学】跟武忠祥老师,如何用好汤家凤1800题?

跟着武忠祥老师的课不代表你只能刷武忠祥老师的题 实际上武忠祥老师体系的题目是有一定的难度的,比如严选题,比如660题,大家可以发现这些题集不仅难,而且数量比较少。武忠祥老师的目的就是通过质量很高的题目,让大家掌…

架构学习总结:企业架构=业务+数据+技术+应用架构

最近再次研读DAMA数据管理知识体系,结合工作对什么是企业架构?如何开展企业架构设计工作有一些新的认识,供大家参考。企业架构包括企业的业务架构、数据架构、技术架构和应用架构,要想做好企业的信息化数字化建设规划,这四个架构都不可缺少,这四个方面的内容共同组成了企…