擅长:python、mysql、java
<p>此声明是根元素的开始标记的一部分:</p>
<pre><code>xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
</code></pre>
<p>这意味着前缀为<code>wsse</code>的元素(例如<code>BinarySecurityToken</code>)位于<code>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</code>命名空间中。</p>
<p>解决方案基本上与链接问题的答案相同。只是另一个名称空间:</p>
<pre><code>import xml.etree.ElementTree as ET
tree = ET.parse('soap.xml')
print tree.find('.//{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}BinarySecurityToken').text
</code></pre>
<p>下面是另一种方法:</p>
<pre><code>import xml.etree.ElementTree as ET
ns = {"wsse": "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"}
tree = ET.parse('soap.xml')
print tree.find('.//wsse:BinarySecurityToken', ns).text
</code></pre>
<p>两种情况下的输出都是<code>my token</code>。</p>
<p>见<a href="https://docs.python.org/2.7/library/xml.etree.elementtree.html#parsing-xml-with-namespaces" rel="nofollow noreferrer">https://docs.python.org/2.7/library/xml.etree.elementtree.html#parsing-xml-with-namespaces</a>。</p>