【发布时间】:2021-03-21 15:34:26
【问题描述】:
我从 CUCM api 得到以下答案:
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:executeSQLQueryResponse xmlns:ns="http://www.cisco.com/AXL/API/12.5"><return><row><pkid>63d1f8a1-0964-caa0-d496-ff91340c236c</pkid><userid>Semenova.LA</userid><firstname/><lastname>Семенова</lastname><snrenabled>t</snrenabled><devicecount>1</devicecount><licensetype>Enhanced </licensetype><licenses>1</licenses></row></return></ns:executeSQLQueryResponse></soapenv:Body></soapenv:Envelope>
我试图解析这个答案。我使用了 lxml 库。
from lxml import etree
root = etree.fromstring(response)
但我收到以下错误
文件“src\lxml\etree.pyx”,第 3237 行,在 lxml.etree.fromstring 文件“src\lxml\parser.pxi”,第 1891 行,在 lxml.etree._parseMemoryDocument ValueError:不支持带有编码声明的 Unicode 字符串。请使用未声明的字节输入或 XML 片段。
它看起来像是不支持的答案中的一些元素 如果我削减回应
response='''<return><row><pkid>63d1f8a1-0964-caa0-d496-ff91340c236c</pkid><userid>Semenova.LA</userid><firstname/><lastname>Семенова</lastname><snrenabled>t</snrenabled><devicecount>1</devicecount><licensetype>Enhanced </licensetype><licenses>1</licenses></row></return>'''
一切都按预期工作 我应该怎么做才能修复它? 我应该删除不需要的元素,例如:
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:executeSQLQueryResponse xmlns:ns="http://www.cisco.com/AXL/API/12.5">
我该怎么做?
非常感谢!
【问题讨论】:
标签: xml-parsing lxml cisco