我正在嘗試從肥皂回應中讀取 XML 值。包括下面的回應,我正在嘗試從下面的 XML 中讀取 Bearer 令牌。嘗試了幾種方法,但都失敗了。
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ofo:GetToken xmlns:ofo="http://dummyurl.com/xsd/xyz">
<ofo:Token>Bearer 123sfafweo123</ofo:Token>
</ofo:GetToken>
</soapenv:Body>
</soapenv:Envelope>
我試過的代碼
import import lxml.etree
# send request to get above response.
response = requests.post(url, data=body, headers=headers)
root = lxml.etree.fromstring(response.content)
textelem = root.find('Envelope/Body/GetToken/Token')
print(textelem)
uj5u.com熱心網友回復:
您的原始代碼未能考慮命名空間。有幾種方法可以解決它。例如,這應該有效
ns = {"ofo": "http://dummyurl.com/xsd/xyz"}
root.xpath('//ofo:Token/text()',namespaces=ns)[0]
或者,如果您想避免處理命名空間:
doc.xpath('//*[local-name()="Token"]/text()')[0]
輸出,在任何一種情況下:
Bearer 123sfafweo123
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532247.html