专注于自动化测试,性能测试.......
使用Python读取xml格式的测试数据(原创)
上一篇 /
下一篇 2009-09-18 05:20:17
/ 个人分类:Python
Mf-{\XhL0F0 python解析xml有两种模式:SAX和DOM模式,我使用的是DOM模式。51Testing软件测试网J\P
xZ!Ab;s8A
-_6A9|&~)v2aJB0测试数据的XML格式:
8W
n1OX4A;PZ%J0 <?xml version="1.0" encoding="utf-8"?>
-<DataSheetid="01"name="ryxx"> -<DataFieldid="001"name="xm"> <Dataid="0001">姓名1</Data>
<Dataid="0002">姓名2</Data>
<Dataid="0003">姓名3</Data>
</DataField>
-<DataFieldid="002"name="xb"> </DataSheet>
-<DataSheetid="02"name="book"> -<DataFieldid="001"name="bookname"> <Dataid="0001">《C#入门经典》</Data>
</DataField>
</DataSheet>
</DataPool>
51Testing软件测试网:`g9| };OQ读取测试数据的代码:
fH
pEo;z1iiUf0#-*-coding:gb2312-*-51Testing软件测试网a$l
wK6W~!`v
from xml.dom import minidom
%V0d K.P
x7`0b0Tk.a0class Data(object):
[K:G{n(T3F$z0 #初始化时,指定要读取数据的Datasheet,以及路径
ff1DE:_0 def __init__(self,sheetname,path):
(T]w#Nc/}(E0 #sheet名称,相当于Excel的sheet51Testing软件测试网+u
j e)|m,xq}
self.sname = sheetname
3DM)g.pt&ez#F0 #xml的路径51Testing软件测试网$Cr.u"MqL^2~
self.path = path
&C+O6l
lj'Wr0 #初始化,返回指定Datasheet的Node
9i!kiE_k'n"aV0 self.xmldoc = minidom.parse(self.path)
:Gd"N0Ri&?nAp#Ga$J0 xe = self.xmldoc.getElementsByTagName("DataSheet")51Testing软件测试网 V&ZB iYlM_
for i in xe:51Testing软件测试网N]/Q4|0t b8m/V X2{
if i.getAttribute("name")==self.sname:51Testing软件测试网-j:FRgc2hT
self.sheet = i51Testing软件测试网s0NAQ2@2uutZ2~S+T
#读取数据的方法,通过字段名称以及位置来获取对应的值51Testing软件测试网:{ s.W*\0N)\R+M{
def getvalue(self,field,num):51Testing软件测试网7D{O'rQ V+L
str = []
KYsJhh0D0 for i in self.sheet.getElementsByTagName("DataField"):51Testing软件测试网SPX"I-gjJ}
if i.getAttribute("name") ==field:51Testing软件测试网wU[8j-m){
for n in i.getElementsByTagName("Data"):51Testing软件测试网4N0r9S/ki[A*?C
v
str.append(n.childNodes[0].data)
5InrxD7C n7}yd"`0 return str[num]51Testing软件测试网4[u*{.F7VC*hF_Ay
## 下面代码为另外一种实现方法,不过比较麻烦51Testing软件测试网._Pr$Tu
## for i in self.sheet.childNodes:51Testing软件测试网^.F9D/t*L0C/cG+t
## if i.nodeType == 1:
0nnoi T!} LxV0## if i.getAttribute("name") == field:
$d)M^#D0w0## for x in i.childNodes:
df!^&]w;W~g:k0## if x.nodeType == 1:51Testing软件测试网+}7B4nuAX7K0? j
## str.append(x.childNodes[0].data)51Testing软件测试网/w F@i-F#uS
## return str[num]51Testing软件测试网0b3rg+NaWyH
#获取数据实例
)U} u8~Nfc4ke rfD5J0d = Data("ryxx","D:\TestData.xml")
&g)Q(Y,q(G.q0print d.getvalue("xb",0)51Testing软件测试网!fCW
gb&\ ?/Y9J^]0P2^
g)}/GI(e3s0AYIF%Q\H d.b0 51Testing软件测试网e1E)|PI{4s
收藏
举报
TAG:
Python
python