【Python实例一】使用minidom读取xml文件

前言:
最近刚在廖雪峰老师的网站里学习了Python的基础内容,想着循序渐进地找点实例练练手,网上看到有很多相关资料,决定针对感兴趣的内容实际编码实践一下,昨天刚好看到有关使用Python来读取XML文件的资料,看起来还算简单,所以打算就从这里开始着手我的Python实践~
由于我只知道html这之类的标记语言,虽然也有看到过XML的文件,但是还没有了解过XML,所以就先去看了看有关XML的基本介绍,去W3C网站上实验了几个例子,大概知道了这是一个什么东西,下面有一些XML的基本概念,具体的可以去这里看看 --> http://www.w3school.com.cn/xml/
 
目录:
下面的内容结构如下:
一、什么是XML
二、XML(可扩展标记语言)与HTML(超文本标记语言)的关系
三、关于Python Minidom 四、开始用pyhton读取xml文件
--------------------------------------------------------------------------------------------------------------------------
正文:
一、什么是XML
  • 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”,比较简单,代码如下:

1  <?xml version="1.0" encoding="UTF-8" ?>
2  <catalog>
3     <aa value="first">this is the 1st.</aa>
4     <aa value="second">this is the 2nd.</aa>
5  </catalog>

2. 在同一个目录下,建立一个名为“xml_read.py”的文件
         首先要导入minidom类库,导入方式有两种,对应的打开XML文件的语句也稍有不同。
      第一种:

1 #导入类库
2 import xml.dom.minidom
3 #使用minidom里的parse()函数打开xml文档
4 dom = xml.dom.minidom.parse('123.xml')

       第二种:

1 #导入类库
2 from xml.dom import minidom
3 #使用minidom里的parse()函数打开文件
4 doc = minidom.parse('123.xml')

      导入类库并成功打开XML文件后,要获取根节点,这里的“documentElement”有点像HTML语言里的使用:

1 root = dom.documentElement

      先试试将根节点相关的三种基本属性显示出来,代码如下:

1 print root.nodeName
2 print root.nodeValue
3 print root.nodeType

    “xml_read.py”的完整代码 以及 实验效果如下:

 1  #coding=utf-8
 2  
 3  #导入类库
 4  import xml.dom.minidom
 5 
 6  #使用minidom里的parse()函数打开xml文档
 7  dom = xml.dom.minidom.parse('123.xml')  
 8  
 9  root = dom.documentElement
10 #每一个节点都有它的 nodeName、nodeValue、nodeType属性
11 print root.nodeName
12 print root.nodeValue
13 print root.nodeType

    效果如下:

---------------------------------------------------------------------------------------------------------------------

刚刚演示的是对根节点的基本属性显示,下面演示怎么获取子元素的相关信息。

对于知道元素名字的子元素,可以使用getElementsByTagName方法获取,由该方法返回的是一个list,因此需要用循环来读出“123.xml”子标签的内容:

修改后的“xml_read.py”的完整代码如下:

 1  #coding=utf-8
 2  
 3  #导入类库
 4  import xml.dom.minidom
 5   
 6  #使用minidom里的parse()函数打开xml文档
 7  dom = xml.dom.minidom.parse('123.xml')  
 8   
 9  root = dom.documentElement  
10  nodes= root.getElementsByTagName("aa")  
11  for n in nodes:  
12      print n.getAttribute("value") #获取属性值  
13      print n.childNodes[0].data  #获取文本值  

    结果显示如下:

   这只是我的第一个实例尝试,也希望自己之后能够坚持练习,多去发现问题解决问题,逐步提高自己~

 

转载于:https://www.cnblogs.com/sunnywss/p/6635187.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值