[英]Python XML parsing on different levels
我正在嘗試使用Python來解析在不同級別上具有相同名稱標記的XML。 我通過文檔和其他StackOverflow答案搜索了很多,但我找不到合適的解決方案。
XML看起來像這樣:
<configuration>
<applications>
<application>
<name>name1</name>
<protocol>protocol1</protocol>
<port>port1</port>
</application>
<application>
.
</application>
<application-set>
<name>appset_name1</name>
<application>
<name>appname1</name>
</application>
</application-set>
<application-set>
.
</application-set>
</applications>
</configuration>
我需要從第3級的應用程序標簽獲取名稱,協議和端口,並從第3級的應用程序集標簽中獲取名稱和其他應用程序名稱(可以在一個簡單的列表中)
謝謝
使用ElementTree API,您只需查找.//application
XPath即可在任何級別查找<application>
元素:
for application in tree.findall('.//application'):
name = application.find('name').text
protocol = application.find('protocol')
if protocol is not None:
protocol = protocol.text
port = application.find('port')
if port is not None:
port = port.text
通過指定適用的父級,XPath表達式也可以在更具體的級別上找到標記:
'.//applications/application' # any <application> tag below <applications>
'.//application-set/application' # any <application> tag below <applications>
'./*/*/application' # <application> tags with two elements in between
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.