Python 之 解析xml

  • 前言
  • 一、xml文档
  • 二、SAX解析
  • 三、minidom解析
  • 总结

前言

小白个人研究成果,仅供参考

这里介绍解析xml的两种方式

一、xml文档

以下是我需要解析的demo.xml文档

<collection shelf="New Arrivals"><class className="一年级(1)班"><code>20210001</code><number>30</number><teacher>张秀梅</teacher></class><class className="一年级(2)班"><code>20210002</code><number>31</number><teacher>吴启秀</teacher></class><class className="一年级(3)班"><code>20210003</code><number>29</number><teacher>杜飞飞</teacher></class>
</collection>

二、SAX解析

import xml.sax
import xml.dom.minidomclass ClassHealder(xml.sax.ContentHandler):# 重写init函数def __init__(self):# 设置一个通用变量self.CurrentData = ''self.code = ''self.number = ''self.teacher = ''# 重写元素开始事件def startElement(self, tag, attributes):# 将变量赋值给tagself.CurrentData = tagif tag == 'class':print('-----------class标签-----------')className = attributes['className']print('movie标签的className是:%s' % className)# 重写元素结束事件def endElement(self, tag):if tag == 'code':print('班级编号:', self.code)if tag == 'number':print('班级人数:', self.number)if tag == 'teacher':print('班主任:', self.teacher)self.CurrentData = ''# 重写内容处理事件def characters(self, content):if self.CurrentData == 'code':self.code = contentif self.CurrentData == 'number':self.number = contentif self.CurrentData == 'teacher':self.teacher = contentif __name__ == '__main__':# 创建一个新的解析器对象并返回parser = xml.sax.make_parser()# 关闭命名空间parser.setFeature(xml.sax.handler.feature_namespaces, 0)# 重写 ContextHandlerHandle = ClassHealder()parser.setContentHandler(Handle)# 设置xml文件读取路径parser.parse('C:\\Users\\yzzn\\Desktop\\demo.xml')

运行结果如下:

三、minidom解析

if __name__ == '__main__':# 第二种方式,用minidom解析xmldomTree = xml.dom.minidom.parse('C:\\Users\\yzzn\\Desktop\\demo.xml')# 获取所有元素eles = domTree.documentElement# 获取class元素classTag = eles.getElementsByTagName('class')# 遍历classTag元素for c in classTag:# 判断并获取属性值classNameif c.hasAttribute('className'):print('班级是:%s' % c.getAttribute('className'))# 获取class标签里的子标签code = c.getElementsByTagName('code')[0].childNodes[0].datanumber = c.getElementsByTagName('number')[0].childNodes[0].datateacher = c.getElementsByTagName('teacher')[0].childNodes[0].dataprint('班级编号:%s,班级人数:%s,班主任:%s' % (code, number, teacher))pass

运行结果如下:

总结

又是努力向上的一天。有啥不足之处欢迎指出
本文参考自:https://www.runoob.com/python/python-xml.html

Python 之 解析xml相关推荐

  1. Python语言解析xml文件

    python语言解析xml文件的常用的有两种方式: 通过MiniDom库解析xml文件 通过ElementTree库解析xml文件 MiniDom方式解析xml xml文件以data.xml为例,具体 ...

  2. python lxml_python解析xml之lxml

    虽然python解析xml的库很多,但是,由于lxml在底层是用C语言实现的,所以lxml在速度上有明显优势.除了速度上的优势,lxml在使用方面,易用性也非常好.这里将以下面的xml数据为例,介绍l ...

  3. Python ElementTree 解析 xml文件

    文章目录 一.xml文件结构 二.基础解析 1.加载文档 2.获取根元素 3.根元素的属性 4.遍历其直接子元素 5.通过索引值来访问特定的子元素 查找需要的元素 三.支持通过XPath查找元素 四. ...

  4. 如何在Python中解析XML?

    我在包含xml的数据库中有很多行,并且我正在尝试编写一个Python脚本,该脚本将遍历这些行并计算出现特定节点属性的实例数量. 例如,我的树看起来像: <foo><bar>&l ...

  5. 使用python批量解析xml文件并且预处理成json的格式

    基本 文件的xml的格式如下: <?xml version="1.0" encoding="GB2312" ?> <Body><T ...

  6. python 处理xml pandas_在python中解析xml到pandas数据帧

    解决方案中的问题是"元素数据提取"没有正确完成.您在问题中提到的xml嵌套在几个层中.这就是为什么我们需要递归地读取和提取数据.在这种情况下,下面的解决方案应该能满足您的需要.尽管 ...

  7. python ElementTree解析xml

    import xml.etree.ElementTree as ETtree = ET.parse(args.test_file) root = tree.getroot()for m in root ...

  8. Python解析XML文件

    今天学习如何利用Python来解析XML文档. 给定一个XML文件,现在我们用Python来提取里面的内容. <deals><data><deal><deal ...

  9. python解析xml文件选用模块_Python标准库系列之xml模块

    Python's interfaces for processing XML are grouped in the xml package. 带分隔符的文件仅有两维的数据:行和列.如果你想在程序之间交 ...

  10. python 使用sax 解析xml 文件

    这里不是说xml 的所以如果xml 不了解,可以百度大致看下即可, SAX知识了解 SAX (simple API for XML )  有解析器和事件处理器 解析器负责读取XML文档,并向事件处理器 ...

最新文章

  1. jQuery 变量数字相加
  2. java中wait和notify的虚假唤醒问题
  3. python web开发-flask中response,cookies,session对象使用详解
  4. HDU2665(函数式线段树-区间第K大)
  5. 学习vi和vim编辑器(8):全局替换(1)
  6. 理论基础 —— 线性表 —— 顺序表
  7. 安捷伦or是德信号源+频谱仪操作: 从程控到自动测试 (五)频谱仪截屏到U盘的程控实现
  8. 设备无法连接到你的计算机,此硬件设备未连接到计算机(代码45) | MOS86
  9. 三个比较经典的策略: Dual Thrust、R-Breaker、Dynamic Breakout II
  10. 创建GitHub账号及使用
  11. android 镜像结构,android查看分区和镜像文件的结构
  12. linux smb无法访问服务器,samba服务器访问失败
  13. ZZNU2141: 2333
  14. google翻译出错什么原因?翻译英文页面时中文闪了下就显示“翻译出错请重试”
  15. 实验10 人机交互的质量与测评
  16. html标签中的style=visibility:visible
  17. 视通科技知识产权保护中心审理庭解决方案:助力知识产权保护中心信息化建设
  18. 字节跳动无恒实验室首次亮相Black Hat 2021亚洲黑帽大会:全生命周期管理的隐私保护框架
  19. 深入理解MVC和jstl
  20. vue3小野森森-05-createApp,component,mount,unmount,directive指令,use,plugin,推荐一个好的vue3系列教程

热门文章

  1. steam (游戏平台)
  2. mySQL字段中斜杠_MySQL 列名中包含斜杠或者空格的处理方法
  3. 直播、录屏软件OBS Studio下载安装操作教程
  4. 浪漫的表白(C语言)
  5. Spring Data Redis 官方中文文档
  6. 思维模型 时间管理矩阵
  7. 一种动态阈值白平衡算法实现
  8. php新年倒计时源码,2020年-新年倒计时HTML源码
  9. 2020长安杯网站重构部分
  10. FatFS-通用FAT文件系统详解