簡體   English   中英

XML ElementTree:兩個同名標簽

[英]XML ElementTree: two tags with the same name

我正在尋找包含值(IP 地址)但循環返回第一個標簽的第二個標簽。

xml:

<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply
    xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:52622325-b136-40cf-bc36-85332e25b6f3"
    xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <data>
        <native
            xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">
            <interface>
                <GigabitEthernet>
                    <name>1</name>
                    <ip>
                        <address>
                            <primary>
                                <address>192.168.40.30</address>
                                <mask>255.255.255.0</mask>
                            </primary>
                        </address>
                    </ip>
                    <logging>
                        <event>
                            <link-status/>
                        </event>
                    </logging>
                    <mop>
                        <enabled>false</enabled>
                        <sysid>false</sysid>
                    </mop>
                    <negotiation
                        xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-ethernet">
                        <auto>true</auto>
                    </negotiation>
                </GigabitEthernet>
            </interface>
        </native>
    </data>
</rpc-reply>

Python 代碼:此代碼從第一個地址標簽不返回任何內容。

import xml.etree.ElementTree as ET

tree = ET.parse("C:\\Users\\Redha\\Documents\\test_network\\interface1234.xml")
root = tree.getroot()   
namespaces = {'native': 'http://cisco.com/ns/yang/Cisco-IOS-XE-native'  }
for elem in root.findall('.//native:ip', namespaces): 
        s = elem.find('.//native:address',namespaces)
        s1 = elem.find('.//native:name',namespaces)
        s2 = elem.find('.//native:mask',namespaces)
        ip_address = s.text
        interface = elem.tag
        number = s1.text
        mask = s2.text
        print(interface,ip_address,number,mask)

此代碼返回所有值。

嘗試更具體地了解您想要的address標簽,即使用:

s=elem.find(‘.//native:primary/native:address’,namespaces)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM