python 解析 xml
<taskList nextId="62292">
<task module="reliability"
owner="vprovodi"
id="59074"
status="error"
result="XFL is OK;init OK;Tests: 17, Expected failures: 1, Unexpected: 1, Actual total count is OK: 17 >= 15(unmatched!);adb OK; Crashlogs: 0; Tombstones: 1; Sigs: 2+2+0+0; Throttlings: 0+0+0+0; Device errors: 0"
addedBy="muxiaofx@muxiaofx-desk{client}"
changedBy="muxiaofx@muxiaofx-desk{client}"
runningBy="lab_labrqabj"
runningOn="host007-agent11"
addedTime="1410503955947"
startTime="1410581427467"
finishTime="1410591199376"
>
<match property="android.build.origin" value="ABT"/>
<match property="android.build.target" value="KK"/>
<match property="android.build.branch" value="art-opt"/>
<match property="android.build.date" value="WW36"/>
<match property="android.build.type" value="userdebug"/>
<match property="android.device.type" value="T100TA"/>
<match property="agent.group" value="art-opt"/>
<property name="vm.backend" value="bronze"/>
<property name="task.group" value="weekly_WW36_ABT_art-opt_bronze_T100TA"/>
<property name="vm.mode" value="art"/>
<property name="task.tests" value="zip_vm"/>
</task>
</taskList>
使用python 独有etree 方式解析
from xml.etree import ElementTree as et def parseXml(filename=".\\resource\\test.xml"}):
result_list = []
tree = et.parse(filename)
root = tree.getroot() elements = root.findall("task")
for el in elements:
adict = {}
attr = el.attrib # attributes of task node
adict.update(attr) # attr is a dict, put the key-values of attr into adict
matches = el.findall('match')
for m in matches:
key = m.attrib.get('property')
value = m.attrib.get('value')
adict[key] = value
props = el.findall('property')
for p in props:
key = p.attrib.get('name')
value = p.attrib.get('value')
adict[key] = value
if is_target(adict, filter):
result_list.append(adict)
return result_list
使用 minidom 解析
from xml.dom.minidom import parse def load_task_list(filename):
xml_dom = parse(filename)
node_tasklist = xml_dom.documentElement for node_task in node_tasklist.getElementsByTagName('task'):
for (attr_name, attr_value) in node_task.attributes.items():
print attr_name, attr_value # attributes of task node
for node in node_task.childNodes:
if node.nodeType == node.ELEMENT_NODE:
if node.nodeName == 'match':
prop_name = node.getAttribute('property')
prop_value = node.getAttribute('value')
print 'match: %s:%s'%(prop_name, prop_value)
elif node.nodeName == 'property':
prop_name = node.getAttribute('name')
prop_value = node.getAttribute('value')
print 'property: %s:%s'%(prop_name, prop_value) load_task_list(r'.\resource\test.xml')
python 解析 xml的更多相关文章
- python 解析XML python模块xml.dom解析xml实例代码
分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...
- python解析xml模块封装代码
在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...
- python解析xml之lxml
虽然python解析xml的库很多,但是,由于lxml在底层是用C语言实现的,所以lxml在速度上有明显优势.除了速度上的优势,lxml在使用方面,易用性也非常好.这里将以下面的xml数据为例,介绍l ...
- python解析xml
python解析xml import xml.dom.minidom as minidom dom = minidom.parse("aa.xml") root = dom.get ...
- python 解析xml
在工作中很多时候都要用到xml,使用这个时候难免会设计到解析他,然后就研究了一下python解析xml问题,看了很多东西,python有很多解析xml的包,但是也折腾我好一段时间,最后选择了这个方法. ...
- Python 解析 XML 文件生成 HTML
XML文件result.xml,内容如下: <ccm> <metric> <complexity>1</complexity> <unit> ...
- Python 解析XML实例(xml.sax)
已知movies.xml <collection shelf="New Arrivals"> <movie title="Enemy Behind&qu ...
- 横向对比分析Python解析XML的四种方式
横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...
- PYTHON解析XML的多种方式效率对比实测
在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜索后发现,目前应用比较广泛,且效率相对较高的E ...
- python 解析xml 文件: Element Tree 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
随机推荐
- jexus 配置 学习
http://www.linuxdot.net/ 1.禁止或允许某IP或IP段访问网站 A.只允许某些IP地址访问网站(白名单功能) 默认情况下,允许所有IP地址访问.如果手工设置IP地址白名单, 那 ...
- Dynamic - ExpandoObject学习心得
1. 今天下午在做开发过程中,遇到了一个问题,要往Xml文件中添加新的节点,做个xml开发的都知道该怎么做,这不是什么难事,我卡卡卡卡把这个问题解决了,但是新问题又来了,要对xml中对应的节点数据添 ...
- 11g RAC R2 体系结构---Grid
基于agent的管理方式 从oracle 11.2开始出现了多用户的概念,oracle开始使用一组多线程的daemon来同时支持多个用户的使用.管理资源,这些daemon叫做Agent.这些Agent ...
- 1093. Count PAT's (25)
The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...
- poll实现
struct pollfd { int fd; //当前描述符 short events; //进程关心的该描述符的事件 short revents; //返回 ...
- FindWindow()&&FindWindowEx
这个函数呢,我一般用来自动刷刷网页啥的比如我最近就在刷52破解的在线时间,好啦怎么用是你自己的事情. FindWindow()主要用来获取目标句柄 或着说窗口的权限 HWND FindWindow( ...
- .net 科学类型相关问题
Q:如果我要把使用科学记数法表示的string转换为int又该如何呢? A:你可以通过把NumberStyles.AllowDecimalPoint | NumberStyles.AllowExpon ...
- Handlebars模板引擎中的each嵌套及源码浅读
若显示效果不佳,可移步到愚安的小窝 Handlebars模板引擎作为时下最流行的模板引擎之一,已然在开发中为我们提供了无数便利.作为一款无语义的模板引擎,Handlebars只提供极少的helper函 ...
- [原创] zabbix学习之旅六:如何解决zabbix server在内网,而邮件发送服务器在外网的问题
通过前面的文章,你已经可以快速地搭建一个报警系统,并能正常的收到报警邮件了.不过在很多企业级环境下,邮件发送服务器往往放在外网,而zabbix server放置在内网,在这种情况下,zabbix的报警 ...
- IntelliJ IDEA 15 创建maven项目
说明 创建Maven项目的方式:手工创建 好处:参考IntelliJ IDEA 14 创建maven项目二(此文章描述了用此方式创建Maven项目的好处)及idea14使用maven创建web工程(此 ...