我使用请求模块获得一个XML文件,然后我想使用xml.etree.ElementTree模块来获得元素核心USG-01的输出,但我已经搞不清楚该如何做了,我卡住了。我试着编写这个简单的代码来获得sysname元素,但是我得到了一个空的输出。Python代码:
import xml.etree.ElementTree as ET
tree = ET.parse('usg.xml')
root = tree.getroot()
print(root.findall('sysname'))XML文件:
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
<data>
<system-state xmlns="urn:ietf:params:xml:ns:yang:ietf-system">
<sysname xmlns="urn:huawei:params:xml:ns:yang:huawei-system">
core-usg-01
</sysname>
</system-state>
</data>
</rpc-reply>发布于 2021-12-15 06:57:54
您需要在根目录上使用iter()才能到达子节点。
for child in root.iter():
print (child.tag, child.attrib)它会给你当前的子标签和它们的属性。
{urn:ietf:params:xml:ns:netconf:base:1.0}rpc-reply {'message-id': '1'}
{urn:ietf:params:xml:ns:netconf:base:1.0}data {}
{urn:ietf:params:xml:ns:yang:ietf-system}system-state {}
{urn:huawei:params:xml:ns:yang:huawei-system}sysname {}现在,您需要使用以下代码循环到所需的标记:
for child in root.findall('.//{urn:ietf:params:xml:ns:yang:ietf-system}system-state'):
temp = child.find('.//{urn:huawei:params:xml:ns:yang:huawei-system}sysname')
print(temp.text)输出将如下所示:
core-usg-01发布于 2021-12-15 09:01:53
试试下面的一个衬垫
import xml.etree.ElementTree as ET
xml = '''<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
<data>
<system-state xmlns="urn:ietf:params:xml:ns:yang:ietf-system">
<sysname xmlns="urn:huawei:params:xml:ns:yang:huawei-system">
core-usg-01
</sysname>
</system-state>
</data>
</rpc-reply>'''
root = ET.fromstring(xml)
print(root.find('.//{urn:huawei:params:xml:ns:yang:huawei-system}sysname').text)输出
core-usg-01https://stackoverflow.com/questions/70359267
复制相似问题