XML文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<tokenxml>
<tokenspec>
<spec id="TOTP01">
<otplen>6</otplen>
<intervaltime>60</intervaltime>
<updateresplen>0</updateresplen>
<puk1len>0</puk1len>
</spec>
</tokenspec>
<tokenlist>
<token sn="rere0000000000" specid="TOTP01">
<seed>DDC31A7804A2DBD200BD12C9E752A5E5556FF4C28760DA8A92D368B4B07D7E5B</seed>
<iv>8CAC8153F5AF7BCE0F9BAF6E5BC7D69C</iv>
<mac>A60D6FF6E2720832DF5175D097A03362</mac>
</token>
<token sn="rere0000000001" specid="TOTP01">
<seed>0D6DED7C98F5963B6680BF48F077267307D2FC3D62475A9C0AAB2AC2F600751F</seed>
<iv>D21A12C40112DFEB2C956636A394436D</iv>
<mac>5683728982A0B89FFDB1F6F7F6D83062</mac>
</token>
<token sn="rere0000000002" specid="TOTP01">
<seed>5C432634DB6EED8AFC06CFE9199C119BF056E7B405D5CF00F357EE52E6779CF1</seed>
<iv>89ACBD17D31DADD65861999BD4617BFE</iv>
<mac>3762E2ABEAA26B5A40CC327B61B3736C</mac>
</token>
<token sn="rere0000000099" specid="TOTP01">
<seed>62A367C274AE995157A10D2A45C05928C10DB17B1E7B8538C29E211CE00210BB</seed>
<iv>23967F8C156728E33A4DED3FD320C478</iv>
<mac>3CDD4CB5A67822E4ED13B27D205A07F0</mac>
</token>
</tokenlist>
</tokenxml>

读取XML代码:

def xmltest(xmlFile):
import xml.etree.cElementTree as ET#cElementTree是ElementTree的C实现版本,速度更快
tree = ET.parse(xmlFile)
root = tree.getroot()
print root.tag, "---", root.attrib
#for elem in tree.iter(tag='token'):#此方法和下面的方法结果一致,范围比较大
for elem in root.find('tokenlist').findall('token'):#此方法精确到具体的元素
print elem.tag,':', elem.attrib
print "sn:%s, specid:%s" % (elem.get('sn'), elem.get('specid'))
print " seed:", elem.find("seed").text
print " iv:", elem.find("iv").text
print " mac:", elem.find("mac").text
print
if __name__ == '__main__':
  xmltest('C:\\Users\\tester_cp\\Desktop\\test.xml')

结果:

tokenxml --- {}
token : {'specid': 'TOTP01', 'sn': 'rere0000000000'}
sn:rere0000000000, specid:TOTP01
seed: DDC31A7804A2DBD200BD12C9E752A5E5556FF4C28760DA8A92D368B4B07D7E5B
iv: 8CAC8153F5AF7BCE0F9BAF6E5BC7D69C
mac: A60D6FF6E2720832DF5175D097A03362 token : {'specid': 'TOTP01', 'sn': 'rere0000000001'}
sn:rere0000000001, specid:TOTP01
seed: 0D6DED7C98F5963B6680BF48F077267307D2FC3D62475A9C0AAB2AC2F600751F
iv: D21A12C40112DFEB2C956636A394436D
mac: 5683728982A0B89FFDB1F6F7F6D83062 token : {'specid': 'TOTP01', 'sn': 'rere0000000002'}
sn:rere0000000002, specid:TOTP01
seed: 5C432634DB6EED8AFC06CFE9199C119BF056E7B405D5CF00F357EE52E6779CF1
iv: 89ACBD17D31DADD65861999BD4617BFE
mac: 3762E2ABEAA26B5A40CC327B61B3736C token : {'specid': 'TOTP01', 'sn': 'rere0000000099'}
sn:rere0000000099, specid:TOTP01
seed: 62A367C274AE995157A10D2A45C05928C10DB17B1E7B8538C29E211CE00210BB
iv: 23967F8C156728E33A4DED3FD320C478
mac: 3CDD4CB5A67822E4ED13B27D205A07F0

XML文件的读取----cElementTree的更多相关文章

  1. spring 框架的xml文件如何读取properties文件数据

    spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...

  2. python之xml 文件的读取方法

    ''' xml 文件的读取方法 ''' #!/usr/bin/env python # -*- coding: utf- -*- import xml.etree.ElementTree as ET ...

  3. Java文件操作①——XML文件的读取

    一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据 ...

  4. 使用DOM4J解析XMl文件与读取XML文件

    XML文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...

  5. MVVM模式应用 之xml文件的读取

    XML如下所示: <?xml version="1.0" encoding="utf-8" ?> <schools> <schoo ...

  6. C#的XML文件的读取与写入

    在设计程序的时候,对于一些变化性较强的数据,可以保存在XML文件中,以方便用户修改.尤其是对于一些软硬件的配置文件,很多都选择了用XML文件来存取.XML文件简单易用,而且可以在任何应用程序中读写数据 ...

  7. WinForm中DataGridView对XML文件的读取

    转自http://www.cnblogs.com/a1656344531/archive/2012/11/28/2792863.html c#读取XML   XML文件是一种常用的文件格式,例如Win ...

  8. XML文件的读取

    <?xml version="1.0" encoding="gbk"?> <!--设置编码格式为gbk--> <!DOCTYPE ...

  9. linux下使用libxml2实现对xml文件的读取及查询

    由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxm ...

随机推荐

  1. Yii2 行为

    // Step 1: 定义一个将绑定行为的类 class MyClass extends yii\base\Component { // 空的 } // Step 2: 定义一个行为类,他将绑定到My ...

  2. Elasticsearch-PHP 索引操作(转)

    索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...

  3. mysql主从数据库不同步的2种解决方法(转)

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; ...

  4. Cool Sites

    尽快学习完成这个网页 https://www.sitepoint.com/php-security-cross-site-scripting-attacks-xss/ https://msdn.mic ...

  5. DWZ框架中ajax提交文件表单的处理(关闭当前dialog + 刷新父级navTab)

    先重点关注两个js文件:dwz.ajax.js和dwz.core.js 流程: 1.回调iframeCallback <form xx enctype="multipart/form- ...

  6. 一个简单的猜大小的小游戏 python

    初学python,用python写了一个简单的猜大小的小游戏 #!/usr/bin/env python #-*- coding:utf-8 -*- print "------------- ...

  7. iOS: ARC & MRC下string内存管理策略探究

    ARC & MRC下string内存管理策略探究 前两天跟同事争论一个关于NSString执行copy操作以后是否会发生变化,两个人整了半天,最后写代码验证了一下,发现原来NSString操作 ...

  8. iOS中assign,copy,retain之间的区别以及weak和strong的区别(面试)

    • copy: 用于希望保持一份传入值的拷贝,而不是值自身的情况,即把原来的对象完整的赋值到另外一地方,重新加载一内存区,一个地方变了不影响另一个地方的对象. • assign:  简单的直接赋值,相 ...

  9. HDOJ 4336 Card Collector

    容斥原理+状压 Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  10. 2015baidu复赛2 连接的管道(mst && 优先队列prim)

    连接的管道 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...