如何将动态值传递给xml文件?

时间:2018-12-13 11:05:01

标签: python xml xml-parsing

我们正在使用python中的SOAP API。我们需要在请求xml文件中动态传递值。

test.xml文件:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <Add xmlns="http://tempuri.org/">
            <intA>3</intA>
            <intB>4</intB>
        </Add>
    </Body>
</Envelope>

Python脚本:

from bs4 import BeautifulSoup
import requests
import xml.etree.ElementTree as ET
import lxml
url="http://www.dneonline.com/calculator.asmx?WSDL"
headers = {'content-type': 'text/xml'}
xmlfile = open('test.xml','r')
body = xmlfile.read()


response = requests.post(url,data=body,headers=headers)

print(response.text)

我们需要从python动态传递intA和intB。

1 个答案:

答案 0 :(得分:1)

您可以使用格式字符串方法。您可以在xml文件中指定位置/关键字参数。在进行请求调用时,您可以传递这些参数的值。

这是您的test.xml文件的外观:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <Add xmlns="http://tempuri.org/">
            <intA>{first_number}</intA>
            <intB>{second_number}</intB>
        </Add>
    </Body>
</Envelope>

,在您的Python脚本中,您可以加载xmlfile,并在发出发布请求时可以传递参数。方法如下:

import requests

url = "http://www.dneonline.com/calculator.asmx?WSDL"
headers = {'content-type': 'text/xml'}
xmlfile = open('test.xml', 'r')
body = xmlfile.read()

response = requests.post(url, data=body.format(first_number=1, second_number=4), headers=headers)

print(response.text)