如何在Python中获取XML值

ehxuflar  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(132)

我正在尝试从soap响应中读取XML值。包括下面的响应,我正在尝试从下面的XML中读取承载令牌。尝试了几种方法,但都失败了。

<?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)
0yg35tkg

0yg35tkg1#

你的原始代码没有考虑到命名空间。有几种方法可以解决这个问题。例如,这应该可以

ns = {"ofo": "http://dummyurl.com/xsd/xyz"}
root.xpath('//ofo:Token/text()',namespaces=ns)[0]

或者,如果您希望避免处理命名空间:

doc.xpath('//*[local-name()="Token"]/text()')[0]

输出,在任一情况下:

Bearer 123sfafweo123

相关问题