【Python实例一】使用minidom读取xml文件
最近刚在廖雪峰老师的网站里学习了Python的基础内容,想着循序渐进地找点实例练练手,网上看到有很多相关资料,决定针对感兴趣的内容实际编码实践一下,昨天刚好看到有关使用Python来读取XML文件的资料,看起来还算简单,所以打算就从这里开始着手我的Python实践~
下面的内容结构如下:
--------------------------------------------------------------------------------------------------------------------------
- XML指可扩展标记语言;
- 它的设计宗旨是传输数据,而不是显示数据;(ps:不要指望 XML 文件会直接显示为 HTML 页面,XML 文档不会携带有关如何显示数据的信息)
- 标签没有被预定义,需要自行定义标签
- 对它最好的描述是:独立于软件和硬件的信息传输工具
二、XML(可扩展标记语言)与HTML(超文本标记语言)的关系
- 可扩展标记语言是一种很像超文本标记语言的标记语言;(但不是超文本标记语言的替代,而是补充)
- 它被用来传输和存储数据,其焦点是数据的内容;而超文本标记语言是用来显示数据的,其焦点是数据的外观。
三、关于Python Minidom
(ps: 网上找到有关Minidom的详解比较少,大多都是实例。但这里贴个Python官方的介绍地址-->https://wiki.python.org/moin/MiniDom )
用Minidom在XML文件中读取到的信息,可以看做是一个主结构,根据XML文件标签的结构层次,构成了树的结构。
树中每一个节点有三种基本属性:
根名.nodeName为节点标签的名字。比如<aa>标签的nodeName为aa
根名.nodeValue是节点的值,只对文本结点有效。
根名.nodeType是节点的类型(W3C有关XML的介绍中有节点类型的具体阐述--> http://www.w3school.com.cn/xmldom/dom_nodetype.asp)
四、开始使用Python读取XML文件
1. 首先,建立一个测试用的XML文件,名为“123.xml”,比较简单,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<catalog>
<aa value="first">this is the 1st.</aa>
<aa value="second">this is the 2nd.</aa>
</catalog>
2. 在同一个目录下,建立一个名为“xml_read.py”的文件
首先要导入minidom类库,导入方式有两种,对应的打开XML文件的语句也稍有不同。
第一种:
#导入类库
import xml.dom.minidom
#使用minidom里的parse()函数打开xml文档
dom = xml.dom.minidom.parse('123.xml')
第二种:
#导入类库
from xml.dom import minidom
#使用minidom里的parse()函数打开文件
doc = minidom.parse('123.xml')
导入类库并成功打开XML文件后,要获取根节点,这里的“documentElement”有点像HTML语言里的使用:
root = dom.documentElement
先试试将根节点相关的三种基本属性显示出来,代码如下:
print root.nodeName
print root.nodeValue
print root.nodeType
“xml_read.py”的完整代码 以及 实验效果如下:
#coding=utf-8 #导入类库
import xml.dom.minidom #使用minidom里的parse()函数打开xml文档
dom = xml.dom.minidom.parse('123.xml') root = dom.documentElement
#每一个节点都有它的 nodeName、nodeValue、nodeType属性
print root.nodeName
print root.nodeValue
print root.nodeType
效果如下:
---------------------------------------------------------------------------------------------------------------------
刚刚演示的是对根节点的基本属性显示,下面演示怎么获取子元素的相关信息。
对于知道元素名字的子元素,可以使用getElementsByTagName方法获取,由该方法返回的是一个list,因此需要用循环来读出“123.xml”子标签的内容:
修改后的“xml_read.py”的完整代码如下:
#coding=utf-8 #导入类库
import xml.dom.minidom #使用minidom里的parse()函数打开xml文档
dom = xml.dom.minidom.parse('123.xml') root = dom.documentElement
nodes= root.getElementsByTagName("aa")
for n in nodes:
print n.getAttribute("value") #获取属性值
print n.childNodes[0].data #获取文本值
结果显示如下:
这只是我的第一个实例尝试,也希望自己之后能够坚持练习,多去发现问题解决问题,逐步提高自己~
【Python实例一】使用minidom读取xml文件的更多相关文章
- python读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- python专题-读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- 【304】python专题-读取xml文件
参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...
- 读取xml文件中的配置参数实例_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...
- selenium-python读取XML文件
首先这是我们要读取的XML文件 <?xml version="1.0" encoding="utf-8" ?><info> <ba ...
- java 读取XML文件作为配置文件
首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...
- php使用domdocument读取xml文件
使用domdocument读取xml文件需要用到以下几个方法和属性: 方法: 1:读取xml文件:load() 2:获取标签的对象数组:getElementByTagName() 3:对象数组的索引: ...
- Android 开发自己的网络收音机4——读取XML文件的电台数据
国内外的电台数据很多,起码有好几百,所以把这些数据都写到代码里面是不实际的.只能写成一个数据文件,程序启动的时候再去加载.保存这些简单数据,我们肯定会优先使用XML文件,今天讲讲如何读取XML里面的数 ...
- 读取xml文件,写入excel
在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件. 输入xml格式: <?xml version="1.0&qu ...
随机推荐
- 对工具的反思 & deadlines与致歉
人和动物最大的区别就是使用工具的水平. 有些人只凭着对工具的熟练掌握便成了牛人. 工具,到底应该以何种态度去看待? 在我小的时候,工具仅仅是指树枝.线.粉笔,可以让自己有更多游戏可玩:上学之后,便又有 ...
- VMware快照
越来越多的人喜欢使用虚拟机来做实验,但是实验过程并不总是顺利的,所以我们就需要掌握虚拟机快照的使用方法,个人建议的顺序为: 1 在虚拟机打开之前,点击“虚拟机”--"快照"--&q ...
- 【转】用ASP.NET Core 2.1 建立规范的 REST API -- 缓存和并发
原文链接:https://www.cnblogs.com/cgzl/p/9165388.html 本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/901 ...
- Leetcode 684.冗余连接
冗余连接 在本问题中, 树指的是一个连通且无环的无向图. 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成.附加的边的两个顶点包含在1到N中间,这条 ...
- PyTorch深度学习计算机视觉框架
Taylor Guo @ Shanghai - 2018.10.22 - 星期一 PyTorch 资源链接 图像分类 VGG ResNet DenseNet MobileNetV2 ResNeXt S ...
- 安装VMware的一般步骤(安装过程总结)
(安装的是vmwareworkstation11以上) 0.遇到问题为没有权限打开服务“VMAuthdService”时,需要去管理->服务中打开对应的Windows Management In ...
- C#非托管跨线程委托调试
使用C#调用mingw的so文件,拿视频数据回wpf的界面进行显示,注册了回调函数.C++在调用回调函数时遇到了委托被回收的问题,提示:“类型的已垃圾回收委托进行了回调.这可能会导致应用程序崩溃.损坏 ...
- Python两个内置函数——locals 和globals (学习笔记)
这两个函数主要提供,基于字典的访问局部和全局变量的方式.在理解这两个函数时,首先来理解一下python中的名字空间概念.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个字典,它的键 ...
- Android—实现科大讯飞语音合成
背景(可以不看) 实验室项目开发的APP需要有语音提示功能,之前的做法是人工录音,剪辑片段,调用Android的多媒体,播放,呵呵呵,,,这是21世纪!这样肯定显得有点low啊,且不说档次,应用场景也 ...
- Mybatis学习系列(二)Mapper映射文件
Mapper映射文件,作用是用来配置SQL映射语句,根据不同的SQL语句性质,使用不同的标签,mapper文件中常用的标签有<iselect>.<insert>.<upd ...