python - 如何访问 xmlns 命名空间 webservices 中的请求响应?
问题描述
有一个 Web 服务返回类似这样的内容,我想在这个响应中访问id。我该怎么办?
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">{"id":"1819","responseCode":"0","responseMessage":"0"}</string>
另外,我的功能在这里:
import requests
def sen_request():
url = "somewhere.com/somewhere.asmx/new_one"
payload = {}
headers= {}
response = requests.request("GET", url, headers=headers, data = payload)
return (response)
- 我尝试使用response.json()访问 JSON 中的响应,但出现此错误:
Exception Type: JSONDecodeError Exception Value: Expecting value: line 1 column 1 (char 0)
解决方案
该代码使用 json lib 和 XML lib 解析以提取 id
import json
import xml.etree.ElementTree as ET
data = '''<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">{"id":"1819","responseCode":"0","responseMessage":"0"}</string>'''
data1 = '''<?xml version="1.0" encoding="utf-8"?><string xmlns="tempuri.org">{"id":{"id1":"1819"},"responseCode":"0","responseMessage":"0"}</string>'''
root = ET.fromstring(data)
print(json.loads(root.text)['id'])
root = ET.fromstring(data1)
print(json.loads(root.text)['id']['id1'])
输出
1819
1819
推荐阅读
- android - Android studio空值入口:sourceOutputDir=null
- javascript - 如果匹配则如何翻转卡片如果不翻转则保持打开状态
- python - 如何使用 django 为数据库中的列计算具有相同值的连续行?
- javascript - 量角器中的 UnhandledPromiseRejectionWarning
- swift - 如何制作保存状态并运行功能
- c# - Unity IENumerator 给出意外符号错误和错误“不能是迭代器块,因为 'void' 不是迭代器接口类型。”
- azure - Azure Web 应用部署显示了 hostingstart.html
- django - Django:从 corsheaders 导入错误
- mysql - MySQL对不同的行进行分组以创建组和简单的产品
- python-3.x - 来自:无法在 osx 上读取 /var/mail/jira