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

  1. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  2. python解析xml模块封装代码

    在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...

  3. python解析xml之lxml

    虽然python解析xml的库很多,但是,由于lxml在底层是用C语言实现的,所以lxml在速度上有明显优势.除了速度上的优势,lxml在使用方面,易用性也非常好.这里将以下面的xml数据为例,介绍l ...

  4. python解析xml

    python解析xml import xml.dom.minidom as minidom dom = minidom.parse("aa.xml") root = dom.get ...

  5. python 解析xml

    在工作中很多时候都要用到xml,使用这个时候难免会设计到解析他,然后就研究了一下python解析xml问题,看了很多东西,python有很多解析xml的包,但是也折腾我好一段时间,最后选择了这个方法. ...

  6. Python 解析 XML 文件生成 HTML

    XML文件result.xml,内容如下: <ccm> <metric> <complexity>1</complexity> <unit> ...

  7. Python 解析XML实例(xml.sax)

    已知movies.xml <collection shelf="New Arrivals"> <movie title="Enemy Behind&qu ...

  8. 横向对比分析Python解析XML的四种方式

    横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...

  9. PYTHON解析XML的多种方式效率对比实测

    在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜索后发现,目前应用比较广泛,且效率相对较高的E ...

  10. python 解析xml 文件: Element Tree 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

随机推荐

  1. wpf窗体中复合控件焦点控制

    1.         自定义控件 在UserControl标记中 <UserControl KeyboardNavigation.ControlTabNavigation="Local ...

  2. linux命令详解之useradd命令

    useradd命令使用方法,还包括用户账号的添加.删除与修改.用户口令的管理.用户组的管理方法. Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申 ...

  3. mikrotik/IPSec Dynamic End points Updater.rsc

    # IPSec Peer/Policy Updater for Dynamic WAN addresses # ============================================ ...

  4. 将开始我的WebForm控件开发之旅

    时间总是过得很快,一转眼三个月就过去了,三个月内发生了很多的事.因为学校的学习,离开了我入门WPF的公司:开发了第一个外包项目,做的是WebForm的:而且了马上要毕业了,毕业后的公司应该是专门用We ...

  5. linux 文件在磁盘上的表示

    基本构成 分区就是把磁盘像比萨饼一样切成大小一样的扇形, 当然分区大小不一样扇形的大小也就不一样 上下一串盘片中,相同半径的磁道所组成的一个圆柱型的环壁,就称为柱面 在柱面组中, 比较重要的两个结构是 ...

  6. C#获取数据库中的Instance

    如果我现在要写个代码生成器,连接数据库,那你得知道有哪些Database存在吧,不然咋整? 在VS中我们添加一个ADO.NET的实体模型 在选择数据库名称的时候就是获取了数据库中Database In ...

  7. [转]adb pull Permission denied及no such file错误

    adb pull  Permission denied及no such file错误 http://www.the8m.com/blog/article/javadk/adbpull.html XP系 ...

  8. 【BZOJ 1188】 [HNOI2007]分裂游戏

    Description 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子 ...

  9. 微软职位内部推荐-SDE2 (Windows driver)

    微软近期Open的职位: SDE2 (Windows driver) Job title: Software Development Engineer 2 Location: Shanghai, Ch ...

  10. VS查看工程项目代码行数

    ctrl+shift+F  查找选项选正则表达式  正则表达式 b*[^:b#/]+.*$或 ^b*[^:b#/]+.*$