簡體   English   中英

Python XML在不同級別上解析

[英]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.

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