Python-如何编辑Soap信封/xmlns的名称空间:encodingStyle

Python-如何编辑Soap信封/xmlns的名称空间:encodingStyle,python,xml,soap,lxml,xml-namespaces,Python,Xml,Soap,Lxml,Xml Namespaces,我在为SOAP调用创建XML文件时遇到问题 我使用以下代码创建XML: from lxml import etree as ET SOAP_NS = "URL" ENCODE_NS = "URL2/soap-encoding" ns_map = {'soap' : SOAP_NS, 'encodingStyle' : ENCODE_NS} root = ET.Element(ET.QName(SOAP_NS, 'Envelope'), nsmap=ns

我在为SOAP调用创建XML文件时遇到问题

我使用以下代码创建XML:

from lxml import etree as ET

SOAP_NS = "URL"
ENCODE_NS = "URL2/soap-encoding"
ns_map = {'soap' : SOAP_NS, 'encodingStyle' : ENCODE_NS}

root = ET.Element(ET.QName(SOAP_NS, 'Envelope'), nsmap=ns_map)
body = ET.SubElement(root, ET.QName(SOAP_NS, 'Body'), nsmap=ns_map)

Data = ET.SubElement(body, 'Data')
Data.text="1234"
Data.set('type','import')
xml_file = ET.ElementTree(root)
xml_file.write('Test.xml', pretty_print=True)
因此,我得到以下XML文件:

<soap:Envelope xmlns:soap="URL1" xmlns:encodingStyle="URL2/soap-encoding">
  <soap:Body>
    <Data type="import">1234</Data>
  </soap:Body>
</soap:Envelope>

1234
我需要创建的XML文件的第一行必须是这样的

<soap:Envelope xmlns:soap="URL1" soap:encodingStyle="URL2/soap-encoding">
  <soap:Body>
    <Data type="import">1234</Data>
  </soap:Body>
</soap:Envelope>

1234
如何将URL 2的前缀/命名空间从xmlns:encodingStyle更改为soap:encodingStyle,或者如果我的方法错误,如何将soap:encodingStyle添加到envolope


提前感谢

soap:encodingStyle是绑定到命名空间的属性。使用
set()
方法添加它

from lxml import etree as ET
 
SOAP_NS = "URL"
ENCODE_NS = "URL2/soap-encoding"
ns_map = {'soap' : SOAP_NS}
 
root = ET.Element(ET.QName(SOAP_NS, 'Envelope'), nsmap=ns_map)
root.set(ET.QName(SOAP_NS, "encodingStyle"), ENCODE_NS)
 
body = ET.SubElement(root, ET.QName(SOAP_NS, 'Body'), nsmap=ns_map)
 
Data = ET.SubElement(body, 'Data')
Data.text="1234"
Data.set('type','import')
xml_file = ET.ElementTree(root)
xml_file.write('Test.xml', pretty_print=True)