简体   繁体   中英

Parsing XML in Python with ElementTree

I'm using the documentation here to try to get only the values (name,ip,.netmask) for certain elements. This is an example of the structure of my xml:

<?xml version="1.0" ?>
    <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:5cf32451-91af-4f71-a0bd-ead244b81b1f">
            <data>
                    <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
                            <interface>
                                    <name>GigabitEthernet1</name>
                                    <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type>   
                                    <enabled>true</enabled>
                                    <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
                                            <address>
                                                    <ip>192.168.40.30</ip>
                                                    <netmask>255.255.255.0</netmask>
                                            </address>
                                    </ipv4>
                                    <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"/>
                            </interface>
                            <interface>
                                    <name>GigabitEthernet2</name>
                                    <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type>   
                                    <enabled>true</enabled>
                                    <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
                                            <address>
                                                    <ip>10.10.10.1</ip>
                                                    <netmask>255.255.255.0</netmask>
                                            </address>
                                    </ipv4>
                                    <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"/>
                            </interface>
                            
                    </interfaces>
            </data>
    </rpc-reply> 

Python code: This code returns nothing.

import xml.etree.ElementTree as ET
    
    tree = ET.parse("C:\\Users\\Redha\\Documents\\test_network\\interface1234.xml")
    root = tree.getroot()
    namespaces = {'interfaces': 'urn:ietf:params:xml:ns:yang:ietf-interfaces'  }
    for elem in root.findall('.//interfaces:interfaces', namespaces): 
            s0 = elem.find('.//interfaces:name',namespaces)
            name = s0.text
            print(name)
        
interface = ET.parse('interface2.xml')

interface_root = interface.getroot()

for interface_attribute in interface_root[0][0]:
    print(f"{interface_attribute[0].text}, {interface_attribute[3][0][0].text}, {interface_attribute[3][0][1].text}")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM