[英]Want to delete multiple tags with same tag name in XML using python 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.