python 解析xml 文件: DOM 方式
环境
python:3.4.4
准备xml文件
首先新建一个xml文件,countries.xml。内容是在python官网上看到的。
<?xml version="1.0"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2011</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
准备python文件
新建一个test_DOM.py,用来解析xml文件。
#!/usr/bin/python
# -*- coding: UTF-8 -*- from xml.dom.minidom import parse
import xml.dom.minidom DOMTree = xml.dom.minidom.parse("countries.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("data"):
print ("Root element : %s" % collection.getAttribute("data")) countries = collection.getElementsByTagName("country") for country in countries:
print ("*****Country*****")
if country.hasAttribute("name"):
print ("Name: %s" % country.getAttribute("name"))
rank = country.getElementsByTagName('rank')[0]
print ("Rank: %s" % rank.childNodes[0].data)
year = country.getElementsByTagName('year')[0]
print ("Year: %s" % year.childNodes[0].data)
gdppc = country.getElementsByTagName('gdppc')[0]
print ("Gdppc: %s" % gdppc.childNodes[0].data)
neighbors = country.getElementsByTagName('neighbor')
for neighbor in neighbors:
print ("Neighbor:", neighbor.getAttribute("name"),neighbor.getAttribute("direction"))
执行结果
>python test_DOM.py
*****Country*****
Name: Liechtenstein
Rank: 1
Year: 2008
Gdppc: 141100
Neighbor: Austria E
Neighbor: Switzerland W
*****Country*****
Name: Singapore
Rank: 4
Year: 2011
Gdppc: 59900
Neighbor: Malaysia N
*****Country*****
Name: Panama
Rank: 68
Year: 2011
Gdppc: 13600
Neighbor: Costa Rica W
Neighbor: Colombia E
备注
DOM(Document Object Model)
DOM是一个W3C的跨语言的API,用来读取和更改 XML 文档。
一个DOM解析器在解析一个XML文档时,一次性读取整个文档,把文档中的所有元素保存在内存中的一个树结构中,之后可以对这个树结构进行读取或修改,也可以把修改过的树结构写入xml文件。
参见: https://docs.python.org/2/library/xml.dom.html
DOMTree = xml.dom.minidom.parse("countries.xml")
使用 xml.dom.minidom解析器打开 countries.xml 文件,并返回一个 Document对象,也就是树结构。Document 对象代表了整个 XML 文档,包括它的元素、属性、处理指令、备注等。
参见: https://docs.python.org/2/library/xml.dom.minidom.html
Return a Document from the given input. filename_or_file may be either a file name, or a file-like object. parser, if given, must be a SAX2 parser object. This function will change the document handler of the parser and activate namespace support; other parser configuration (like setting an entity resolver) must have been done in advance.
collection = DOMTree.documentElement
返回 DOMTree的根元素。
Document.documentElement
The one and only root element of the document.
rank = country.getElementsByTagName('rank')[0]
从country往下寻找所有 tag名为“rank”的元素节点,将找到的第一个节点赋值给 rank。
Document.getElementsByTagName(tagName)
Search for all descendants (direct children, children’s children, etc.) with a particular element type name.
collection.getAttribute("data")
获取并返回 collection 的“data”属性值。如果collection没有“data”属性,则返回一个空的字符串。
Element.getAttribute(name)
Return the value of the attribute named by name as a string. If no such attribute exists, an empty string is returned, as if the attribute had no value.
python 解析xml 文件: DOM 方式的更多相关文章
- python 解析xml 文件: SAX方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- [转载] python 解析xml 文件: SAX方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- android解析xml文件的方式
android解析xml文件的方式 作者:东子哥 ,发布于2012-11-26,来源:博客园 在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xm ...
- JAVA解析XML之DOM方式
JAVA解析XML之DOM方式 准备工作 创建DocumentBuilderFactory对象; 创建DocumentBuilder对象; 通过DocumentBuilder对象的parse方法 ...
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...
- python 解析xml 文件: Element Tree 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- PYTHON解析XML的多种方式效率对比实测
在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜索后发现,目前应用比较广泛,且效率相对较高的E ...
- 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
- 【TensorFlow】Python解析xml文件
最近在项目中使用TensorFlow训练目标检测模型,在制作自己的数据集时使用了labelimg软件对图片进行标注,产生了VOC格式的数据,但标注生成的xml文件标签值难免会产生个别错误造成程序无法跑 ...
随机推荐
- escape character.
/* 转义字符:通过\ 来转变后面字母或者符号的含义. \n:换行. \b:退格.相当于backspace. \r:按下回车键.window系统,回车符是由两个字符来表示\r\n. \t:制表符.相当 ...
- php中调用其他系统http接口的方法说明
使用函数: file_get_contents($url); 传入接口url及其参数:如 $url="http://192.168.1.1/test.jsp?id=1&type=2& ...
- Direct 2D实现界面库 (1)
大学时尝试过很多次写一个UI库, 初次使用 GDI 绘图, 当时水平很低, GDI功能太弱, 以失败而告终. 之后使用 GDI+ 绘图, 当时水平依旧很低, GDI功能很强, 但效率实在太慢, 以失败 ...
- SGU 197.Nice Patterns Strike Back
时间限制:0.5s 空间限制:6M 题意: 给出长n(n<=10^100)和宽m(m<=5)的地面,铺上黑色和白色的地板,使得没有任意一个2*2大小的地面铺同种颜色的方案数是多少. Sol ...
- SGU 276 Andrew's Troubles
简单的题.直接找题意来就好了. #include <iostream> #include <cstdio> using namespace std; int s, n, ans ...
- HTML TAG FROM MDN
A <a> <abbr> <acronym> <address> <applet> <area> <article> ...
- js prototype __proto__ instanceof constructor
JS中有两个特殊的对象:Object与Function,它们都是构造函数,用于生成对象. Object.prototype是所有对象的祖先,Function.prototype是所有函数的原型,包括构 ...
- AspNet WebApi : MessageHandler(消息处理器 )
1. Http Message Handler WebApi中的MessageHandler类似MVC中的filter,可用于请求/响应到达真正目标前对请求或者响应进行修改,比如:用户身份验证,请求头 ...
- pycharm常用快捷键与设置
pycharm高频率使用的快捷键 Ctrl+Shift+F10 运行当前的页面 Ctrl + / 注释(取消注释)选择的行 Ctrl+Shift+F 高级查找 Shift + Enter 开始新行 T ...
- 去除VS2010中中文注释下的红色波浪线
1,中文注释以分号结尾 2,Assist X 菜单栏->Assist X Option->Underline 选择“min”.