使用Python读取TestTrack记录- Part2

来源:互联网 发布:阿里云域名免备案 编辑:程序博客网 时间:2024/06/06 16:35

忙着写培训文档,今天只解决了read xml via pathon,明天七点起床去公司把export module解决完,开始集成计算模块,记录一下今天的completed task:

1. read xml via ElementTree

<?xml version="1.0" encoding="utf-8"?><TestTrackData>  <Server>http://10.7.88.11/ttsoapcgi.wsdl</Server>  <User>administrator</User>  <Password></Password>  <ExportFile>D:\TTDefectExport.xml</ExportFile></TestTrackData>

使用python编写代码:

from xml.etree import ElementTreedef ReadXMLNode(configFile, nodePath):    root = ElementTree()    root = ElementTree.Parse(configFile)    node = root.find(nodePath)    return node.textif __name__ == '__main__':    config = r"D:\Config.xml"    serverPath = ReadXMLNode(config, "Server")    userPath = ReadXMLNode(config, "User")    pswPath = ReadXMLNode(config, "Password")    exportPath = ReadXMLNode(config, "ExportFile")

尝试下dom来操作xml:create xml file via dom

def ReadXMLNode(configFile, nodePath):    tree = ElementTree()    root = tree.Parse(configFile)    node = root.find(nodePath)    return node.textif __name__ == '__main__':    config = r"D:\Config.xml"    server = ReadXMLNode(config, "Server")    user = ReadXMLNode(config, "User")    psw = ReadXMLNode(config, "Password")    if psw == None:        psw = ''    export = ReadXMLNode(config, "ExportFile")#create a connection to TT serverserver = suds.client.Client(server)doc = Document()root = doc.createElement("TestTrackData")#logincookie = server.service.DatabaseLogon(database_name, user, psw)try:    #fetch all the defect    rows = server.service.getRecordListForTable(cookie, "Defect")    for record in rows.Records:        # fectch specific defect using given defect number        defect = server.service.getDefect(cookie, record[0].value, bDownloadAttachments=False)        defectNode = doc.createElement("Defect")        if defect.__dict__.hasKey("recordid"):            recordid = defect.__dict__["recordid"]            # recordid            recordidNode = doc.createElement("record-id")            recordidNodeText = doc.createTextNode(recordid)            recordidNode.appendChild(recordidNodeText)            defectNode.appendChild(recordidNode)        if defect.__dict__.hasKey("summary"):            summary = defect.__dict__["summary"]            #summary            summaryNode = doc.createElement("summary")            summaryNodeText = doc.createTextNode(recordid)            summaryNode.appendChild(summaryNodeText)            defectNode.appendChild(summaryNode)        doc.appendChild(root)try:    f = open('bookstore.xml','w')    content = re.sub(r'(<[^/][^<>]*[^/]>)\s*([^<>]{,40}?)\s*(</[^<>]*>)', r'\1\2\3', doc.toprettyxml(indent = ''))    f.write(content)finally:    f.close()except:finally:    response = server.service.DatabaseLogoff(cookie)



生成的xml可能没法自动换行,可能是以下样子

<catalog>  <maxid>  4  </maxid></catalog>

可以用正则表达式来去掉多余\t

content = re.sub(r'(<[^/][^<>]*[^/]>)\s*([^<>]{,40}?)\s*(</[^<>]*>)', r'\1\2\3', doc.toprettyxml(indent = ''))



原创粉丝点击