我使用請求模塊得到一個 XML 檔案,然后我想使用 xml.etree.ElementTree 模塊來獲取元素 core-usg-01 的輸出,但我已經很困惑如何去做,我卡住了。我嘗試撰寫這個簡單的代碼來獲取 sysname 元素,但我得到一個空輸出。蟒蛇代碼:
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>
uj5u.com熱心網友回復:
您需要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
uj5u.com熱心網友回復:
試試下面的一個襯墊
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-01
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/385833.html
上一篇:如何使用sql提取xml子節點
