iT邦幫忙

0

如何用python抓取XML中特定tag的資料 (ETREE)

  • 分享至 

  • xImage

各位好

本人有類似以下的XML檔(output.xml)必須要用python來處理
希望可以擷取特定tag中的值
我的XML檔中有namespace,內容大致如下:

<data xmlns="urn:ietf:params:ns:netconf:base:1.0">
  <interfaces xmlns="http://namespace.net">
    <interface>
      <name>Interface0</name>
    </interface>
    <interface>
      <name>Interface1</name>
    </interface>
  </interfaces>
</data>

我用xml.etree這個library來實現
以下是我的code

from xml.etree import cElementTree as ET

tree = ET.ElementTree(file="output.xml")
root = tree.getroot()

nsmap = {'':'http://namespace.net'}  # namespace

for name in root.iterfind('./interfaces/interface/name', namespaces=nsmap):
   print(name.text)

這個code是可以跑的,但自己希望可以進一步實現:
只抓取Interface1,也就是第二個interface中name的值
我嘗試過將'./interfaces/interface/name'改為'./interfaces/interface[2]/name'
不過這只有在XML中沒有namespace時,才能成功抓取到Interface1

請問各版友,有人知道對於有namespace的xml,如果有重複的tag
要如何只抓第2個tag中的值?會想這樣做是希望能加速
謝謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答