如何解析XML中的嵌套元素

时间:2019-06-05 00:47:36

标签: xml python-3.x

我有一个用例,我需要从XML文档中提取一些数据,然后使用简单的if / else语句采取一些措施。

我使用ElementTree库取得了部分成功,我可以使用get and find()检索“节点ID”,“名称”和“地址”。但是尝试从XML主体中“启用连接”是行不通的。

基本上,我需要知道“已启用连接”是对还是错,并采取适当的措施。我浏览了文档,尝试了各种方法,但是没有运气!

import requests
import xml.etree.ElementTree as ET

response = requests.get('http://10.xx.xx.xx/restapi/nodes')
#print(response.text)
tree = ET.fromstring(response.text)
for node in tree.findall('node'):
    nodeid = node.get('id')
    name = node.find('name').text
    address = node.find('address').text
    status = node.find('connected enabled')
    print(nodeid, name, address, status)

我希望查看是否已启用连接= false或true,但我得到的只是“ NONE”

这是我得到的输出:

0B7E2B74-DA55-4AD3-BDEF-11EAC08A2622 i-xxx 10.33.xx.xx:45000 None
32A1A15C-4DB9-4634-B267-2F2760C3EAD3 i-yyy 10.33.xx.xx:45000 None

这是XML数据:

<node id='0B7E2B74-DA55-4AD3-BDEF-11EAC08A2622'>
<address>10.33.1.240:45000</address>
<name>i-0f60ca5b3447061e3</name>
<partition>Default</partition>
<version></version>
<active enabled='true' />
<connected enabled='false' />
<licensed enabled='true' />
<capacity>36</capacity>
<cpu_cores>36</cpu_cores>
<health>
<cpu_usage>0.00163664</cpu_usage>
<memory_usage>4</memory_usage>
<disk_usage>73</disk_usage>
<network_usage>3672</network_usage>
</health>
</node>

1 个答案:

答案 0 :(得分:0)

尝试以下

status = node.find('connected').get('enabled')