忙着写培训文档,今天只解决了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 ElementTree
def ReadXMLNode(configFile, nodePath):
root = ElementTree()
root = ElementTree.Parse(configFile)
node = root.find(nodePath)
return node.text
if __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.text
if __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 server
server = suds.client.Client(server)
doc = Document()
root = doc.createElement("TestTrackData")
#login
cookie = 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)
<catalog>
<maxid>
4
</maxid>
</catalog>
可以用正则表达式来去掉多余\t
content = re.sub(r'(<[^/][^<>]*[^/]>)\s*([^<>]{,40}?)\s*(</[^<>]*>)', r'\1\2\3', doc.toprettyxml(indent = ''))