XML文件的读取----cElementTree
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
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的更多相关文章
- spring 框架的xml文件如何读取properties文件数据
spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...
- python之xml 文件的读取方法
''' xml 文件的读取方法 ''' #!/usr/bin/env python # -*- coding: utf- -*- import xml.etree.ElementTree as ET ...
- Java文件操作①——XML文件的读取
一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据 ...
- 使用DOM4J解析XMl文件与读取XML文件
XML文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...
- MVVM模式应用 之xml文件的读取
XML如下所示: <?xml version="1.0" encoding="utf-8" ?> <schools> <schoo ...
- C#的XML文件的读取与写入
在设计程序的时候,对于一些变化性较强的数据,可以保存在XML文件中,以方便用户修改.尤其是对于一些软硬件的配置文件,很多都选择了用XML文件来存取.XML文件简单易用,而且可以在任何应用程序中读写数据 ...
- WinForm中DataGridView对XML文件的读取
转自http://www.cnblogs.com/a1656344531/archive/2012/11/28/2792863.html c#读取XML XML文件是一种常用的文件格式,例如Win ...
- XML文件的读取
<?xml version="1.0" encoding="gbk"?> <!--设置编码格式为gbk--> <!DOCTYPE ...
- linux下使用libxml2实现对xml文件的读取及查询
由于项目需要,这两天在用C++做XML文件解析的工作.在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口.这篇博客主要介绍如何使用libxm ...
随机推荐
- Effective Objective-C 2.0 — 第四条:多用类型常量,少用#define预处理指令
第四条:多用类型常量,少用#define预处理指令 使用#define 预处理的坏处:定义出来的常量没有类型信息,编译器只是会在编译前据此执行查找与替换操作.即使有人重新定义了常量值,编译器也不会产生 ...
- C-指针
//格式:变量类型 *变量名//定义了一个指针变量p//指针变量只能存储地址//指针就一个作用:能够根据一个地址值,访问对应的存储空间//指针变量p前面的int:指针变量p只能指向int类型的数据in ...
- Python开发【第五篇】:Python基础之杂货铺
字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-310 ...
- mysql explain详解
对于经常使用mysql的兄弟们,对explain一定不会陌生.当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息.借助于 ...
- C#对HTML文档的解析
http://www.2cto.com/kf/201312/268777.html http://jingyan.baidu.com/article/7e44095334bb162fc0e2efad. ...
- 到底instanceof是啥?
对Js有一定了解的盆友肯定都知道instanceof 并且还很常用,比如说用[1, 2, 3] instanceof Array 来判断是否是数组.所以我们可能会简单的以为他就是一个用来判断typeo ...
- javascript自定义滚动条插件,几行代码的事儿
在实际项目中,经常由于浏览器自带的滚动条样式太戳,而且在各个浏览器中显示不一样,所以我们不得不去实现自定义的滚动条,今天我就用最少的代码实现了一个自定义滚动条,代码量区区只有几十行,使用起来也非常方便 ...
- 闲扯json取值,联想map取值。
将list转json(list中的Bean的属性名称为变量,若为常量没必要采用此方式,直接转实体类即可) JSONArray json = JSONArray.fromObject(list); fo ...
- JVM初探 -JVM内存模型
JVM初探 -JVM内存模型 标签 : JVM JVM是每个Java开发每天都会接触到的东西, 其相关知识也应该是每个人都要深入了解的. 但接触了很多人发现: 或了解片面或知识体系陈旧. 因此最近抽时 ...
- U盘快速装ghost系统
U盘装系统U盘装系统是目前最常用的系统安装方式.特别适合于未安装光驱的台式机或超薄笔记本电脑上.小编为了给这类无光驱用户提供最大的便利,将在本文中为大家讲解最详细的U盘装系统教程. 您需要准备一个空的 ...