专注于自动化测试,性能测试.......

使用Python读取xml格式的测试数据(原创)

上一篇 / 下一篇  2009-09-18 05:20:17 / 个人分类:Python

Mf-{\XhL0F0  python解析xml有两种模式:SAX和DOM模式,我使用的是DOM模式。51Testing软件测试网J\P xZ!A b;s8A

-_6A9|&~)v2aJB0测试数据的XML格式:

8W n1OX4A;PZ%J0
 <?xml version="1.0" encoding="utf-8"?>
-<DataPool>
-<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">
 <Dataid="0001"></Data>
 <Dataid="0002"></Data>
 </DataField>
 </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 = i
51Testing软件测试网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)
5InrxD7Cn7}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软件测试网/wF@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软件测试网!fC W gb&\?/Y9J^]0P2^

g)}/GI(e3s0

AYIF%Q\Hd.b0 51Testing软件测试网e1E)|P I{4s


TAG: Python python

 

评分:0

我来说两句

wxf_xsfy

wxf_xsfy

自动化测试的拥簇者,善于自动化测试的框架和工具开发,TIB工作室核心成员

日历

« 2024-04-05  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 381128
  • 日志数: 79
  • 图片数: 1
  • 文件数: 1
  • 书签数: 3
  • 建立时间: 2007-09-19
  • 更新时间: 2018-01-30

RSS订阅

Open Toolbar