我已經從數據庫中讀取一些數據,並使用xml.etree.ElementTree
我能夠使用此代碼生成XML:添加SOAP信封將ElementTree生成的XML
top = ET.Element("Enquiry")
child = ET.SubElement(top, 'DocumentHeader')
msgid = ET.SubElement(child, 'msgid')
msgid.text = "4444444"
refno = ET.SubElement(child, 'refno')
refno.text = "xxxxxx"
msg_func = ET.SubElement(child, 'msg_func')
msg_func.text = "9"
#...
tree = ET.ElementTree(top)
root = tree.getroot()
data = ET.tostring(root, encoding='utf8', method='xml')
print data
這會產生這樣的XML:
<Enquiry>
<DocumentHeader>
<msgid></msgid>
<refno>UCR201700043926</refno>
<msg_func>9</msg_func>
<sender>TIS</sender>
<receiver>CPS</receiver>
<version>1</version>
</DocumentHeader>
<DocumentDetails>
<ucr_no>xxxxxxx</ucr_no>
<token>xxxxxx</token>
</DocumentDetails>
</Enquiry>
現在我需要將XML封裝到SOAP信封中,然後使用請求將其發佈到Web服務中。如何讓我的XML看起來是一樣的,因爲這:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.ucr.oga.kesws.crimsonlogic.com/">
<soapenv:Header/>
<soapenv:Body>
<web:ucrValidation>
<arg0><![CDATA[
<UCR_Enquiry>
<DocumentHeader>
<msgid></msgid>
<refno>xxxxxx</refno>
<msg_func>9</msg_func>
<sender>SGI</sender>
<receiver>CPS</receiver>
<version>1</version>
</DocumentHeader>
<DocumentDetails>
<ucr_no>xxx</ucr_no>
<token>xxxxxx</token>
</DocumentDetails>
</UCR_Enquiry>
]]></arg0>
</web:ucrValidation>
</soapenv:Body>
</soapenv:Envelope>