在将其作为请求发送之前重写 SOAP xml
Rewrite SOAP xml before sen it as request
我需要在发出请求之前重写 SOAP XML 文件。
我可以使用静态文件毫无问题地发送请求和接收响应,但我需要更改一些值
我尝试使用 ElementTree 来操作文件,但找不到标签和值。
文件格式如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<bbs:QueryDRRequestMsg>
<RequestHeader>
...
</RequestHeader>
<QueryDRRequest>
<!--Optional:-->
<bbs:SubAccessCode>
<bbc:PrimaryIdentity>56795810005</bbc:PrimaryIdentity>
</bbs:SubAccessCode>
<bbs:TimePeriod>
<bbs:StartTime>20150901010000</bbs:StartTime>
<bbs:EndTime>20150930010000</bbs:EndTime>
</bbs:TimePeriod>
<bbs:TotalDRNum>2</bbs:TotalCDRNum>
<bbs:BeginRowNum>0</bbs:BeginRowNum>
<bbs:FetchRowNum>10</bbs:FetchRowNum>
</QueryDRRequest>
</bbs:QueryDRRequestMsg>
</soapenv:Body>
</soapenv:Envelope>
我需要更改标签的值
bbc:PrimaryIdentity
和
bbs:StartTime
这些值将从 html 表格中获取,并在按请求发送文件之前使用该数据重写文件。
提前致谢
尝试使用 ElementTree.iter 查看标签的完整文本,如下所示
import xml.etree.cElementTree as ET
tree = ET.parse("filexml")
root = tree.getroot()
for child_root in root.iter():
print child_root.tag, child_root.attrib
这样您将看到 xml 文件元素的完整标记。
要修改你的文件试试这个
import xml.etree.cElementTree as ET
tree = ET.parse("file.xml)
root = tree.getroot()
for child_root in root.iter('{http://some_tag}PrimaryIdentity'):
new_identity = "111111111"
child_root.text = new_identity
child_root.set('update','yes')
tree.write('output.xml')
我需要在发出请求之前重写 SOAP XML 文件。 我可以使用静态文件毫无问题地发送请求和接收响应,但我需要更改一些值 我尝试使用 ElementTree 来操作文件,但找不到标签和值。
文件格式如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<bbs:QueryDRRequestMsg>
<RequestHeader>
...
</RequestHeader>
<QueryDRRequest>
<!--Optional:-->
<bbs:SubAccessCode>
<bbc:PrimaryIdentity>56795810005</bbc:PrimaryIdentity>
</bbs:SubAccessCode>
<bbs:TimePeriod>
<bbs:StartTime>20150901010000</bbs:StartTime>
<bbs:EndTime>20150930010000</bbs:EndTime>
</bbs:TimePeriod>
<bbs:TotalDRNum>2</bbs:TotalCDRNum>
<bbs:BeginRowNum>0</bbs:BeginRowNum>
<bbs:FetchRowNum>10</bbs:FetchRowNum>
</QueryDRRequest>
</bbs:QueryDRRequestMsg>
</soapenv:Body>
</soapenv:Envelope>
我需要更改标签的值
bbc:PrimaryIdentity
和
bbs:StartTime
这些值将从 html 表格中获取,并在按请求发送文件之前使用该数据重写文件。
提前致谢
尝试使用 ElementTree.iter 查看标签的完整文本,如下所示
import xml.etree.cElementTree as ET
tree = ET.parse("filexml")
root = tree.getroot()
for child_root in root.iter():
print child_root.tag, child_root.attrib
这样您将看到 xml 文件元素的完整标记。
要修改你的文件试试这个
import xml.etree.cElementTree as ET
tree = ET.parse("file.xml)
root = tree.getroot()
for child_root in root.iter('{http://some_tag}PrimaryIdentity'):
new_identity = "111111111"
child_root.text = new_identity
child_root.set('update','yes')
tree.write('output.xml')