前言:
最近刚在廖雪峰老师的网站里学习了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”,比较简单,代码如下:

  <?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文件的更多相关文章

  1. python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  2. python专题-读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  3. 【304】python专题-读取xml文件

    参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...

  4. 读取xml文件中的配置参数实例_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...

  5. selenium-python读取XML文件

    首先这是我们要读取的XML文件 <?xml version="1.0" encoding="utf-8" ?><info> <ba ...

  6. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  7. php使用domdocument读取xml文件

    使用domdocument读取xml文件需要用到以下几个方法和属性: 方法: 1:读取xml文件:load() 2:获取标签的对象数组:getElementByTagName() 3:对象数组的索引: ...

  8. Android 开发自己的网络收音机4——读取XML文件的电台数据

    国内外的电台数据很多,起码有好几百,所以把这些数据都写到代码里面是不实际的.只能写成一个数据文件,程序启动的时候再去加载.保存这些简单数据,我们肯定会优先使用XML文件,今天讲讲如何读取XML里面的数 ...

  9. 读取xml文件,写入excel

    在上一篇 Python写xml文件已经将所有订单写入xml文件,这一篇我们把xml文件中的内容读出来,写入excel文件. 输入xml格式: <?xml version="1.0&qu ...

随机推荐

  1. 用gradle编译任意结构的Android项目

    ## 需求 * 继续用`Eclipse`项目的结构,但是使用`gradle`编译,或者说任意的项目结构进行编译. ## 解决方案 1. Android studio的项目结构 1. Android S ...

  2. 自动化测试--testNG

    该文章主要介绍 testNG(testing next generation,下一代测试技术)框架的使用. 1.首先安装testNG 2.安装完成后,创建maven项目,导入TESTNG和seleni ...

  3. Sql面试题之四(难度:中等 | 含答案 | 有逻辑题)

    Sql面试题之四(难度:中等 | 含答案 | 有逻辑题)

  4. 分布式资源调度--YARN框架

    YARN产生背景 YARN是Hadoop2.x才有的,所以在介绍YARN之前,我们先看一下MapReduce1.x时所存在的问题: 单点故障 节点压力大 不易扩展 MapReduce1.x时的架构如下 ...

  5. 剑指offer-二叉树的镜像18

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...

  6. [boost-2] 智能指针

    boost库学习: 智能指针: shared_ptr指针,定义在boost::shared_ptr,如果开发环境支持的话,可以使用memory中的std::shared_ptr. shared_ptr ...

  7. JAVA_四大代码块_普通代码块、构造代码块、静态代码块、同步代码块。

    普通代码块 在方法或语句中出现的{}里面的内容就被称为普通代码块,普通代码块和一般的语句执行顺序一样,由他们在代码中出现的次序决定,即--"先出现先执行". 但是不同的普通代码块即 ...

  8. XML序列化器读取XML数据

    PS:标题我还真的不知道该怎么取比较好,大家将就下吧^_^ 场景:上周接到一个任务,要求我把ASP写的会员充值功能,用ASP.NET复制一遍,没有给我需求文档,就是让我根据代码去分析业务逻辑,然后看到 ...

  9. Javascript Array和String的互转换

    Array类可以如下定义: var aValues = new Array(); 如果预先知道数组的长度,可以用参数传递长度 var aValues = new Array(20); -------- ...

  10. mysql类型与java类型对应异常场景

    MySQL的bigint unsigned类型,对应java的BigInteger类型,在基于mybatis框架时,如果我将bigint unsigned类型的字段的返回放在一个map的返回类型中时. ...