【发布时间】:2020-05-17 01:00:10
【问题描述】:
我正在尝试从返回 XML 的 API 中获取一些信息。我正在遍历 Root,然后是 Children,但是它只是拾取第一个元素。这是一些示例 xml 数据:
<?xml version="1.0" encoding="ISO-8859-1"?>
<result created="2020-06-14T12:54:08-05:00" host="www.systemmonitor.us" status="OK">
<items>
<site>
<siteid>144855</siteid>
<name>
<![CDATA[NC 99 S]]>
</name>
<connection_ok>1</connection_ok>
<creation_date/>
<primary_router/>
<secondary_router/>
</site>
<site>
<siteid>148578</siteid>
<name>
<![CDATA[Trial Accounts]]>
</name>
<connection_ok>1</connection_ok>
<creation_date>2013-09-28</creation_date>
<primary_router/>
<secondary_router/>
</site>
<site>
<siteid>166088</siteid>
<name>
<![CDATA[NEW ACCOUNTS]]>
</name>
<connection_ok>1</connection_ok>
<creation_date>2014-01-08</creation_date>
<primary_router/>
<secondary_router/>
</site>
<site>
<siteid>606559</siteid>
<name>
<![CDATA[Enhanced]]>
</name>
<connection_ok>1</connection_ok>
<creation_date>2019-09-14</creation_date>
<primary_router/>
<secondary_router/>
</site>
</items>
我的代码由这个组成,
r = requests.get('https://www.systemmonitor.us//api/?
apikey=*******c&service=list_sites&clientid=%s' % rmmid)
root = ET.fromstring(r.content)
print(root)
sitelist = {}
for child in root.findall('items'):
for sites in child.findall('site'):
print(sites)
site_info = {}
name = sites.find("name").text
guid = sites.find("siteid").text
sitelist[guid] = site_info
site_info['id'] = guid
site_info['name'] = name
for key, value in sitelist.items():
print(key, value)
return redirect('/computers/home')
return redirect('/computers/home')
我得到了第一个元素,但它似乎没有遍历其他元素。我尝试过使用 .iter 和不同的 .findall 调用。我在这方面缺少什么?
【问题讨论】:
-
请提供最低要求的代码,dict
sub...? -
这是操作中的所有内容,除了来自 stripe 的代码,它刚刚进入 var invoices。
-
订阅工作正常,发票甚至在拉,他们只是没有填写 invoice_list 字典。
-
所有订阅和发票都是条带查询
-
我已更新我的问题以显示所有代码。示例响应和请求它的代码。
标签: python xml api python-requests