簡體   English   中英

使用 xml.etree.ElementTree 獲取文件中的 XML 標簽列表

[英]Getting a list of XML tags in file, using xml.etree.ElementTree

如前所述,我需要使用庫xml.etree.ElementTree文件中的 XML 標記列表。

我知道有一些屬性和方法,如ETVar.child, ETVar.getroot(), ETVar.tag, ETVar.attrib

但是為了能夠使用它們並至少獲得第 2 級的標簽名稱,我不得不使用嵌套 for。

目前我有類似的東西

for xmlChild in xmlRootTag:
    if xmlChild.tag:
        print(xmlChild.tag)

目標是獲取文件中所有甚至深層嵌套的 XML 標記的列表,從而消除重復項。

為了更好的主意,我添加了 XML 代碼的可能示例:

<root>
 <firstLevel>
  <secondlevel level="2">
    <thirdlevel>
      <fourth>text</fourth>
      <fourth2>text</fourth>
    </thirdlevel>
  </secondlevel>
 </firstlevel>
</root>

我對該主題進行了更多研究,並找到了合適的解決方案。 由於這可能是一項常見的任務,我會回答它,因此我相信它可以幫助其他人。

我正在尋找的是 etree 方法 iter。

import xml.etree.ElementTree as ET
# load and parse the file
xmlTree = ET.parse('myXMLFile.xml')

elemList = []

for elem in xmlTree.iter():
    elemList.append(elem.tag)

# now I remove duplicities - by convertion to set and back to list
elemList = list(set(elemList))

# Just printing out the result
print(elemList)

重要筆記

  • xml.etree.ElemTree是一個標准的 Python 庫
  • 示例是為Python v3.2.3
  • 用於刪除重復項的機制基於轉換為set ,它只允許唯一值,然后轉換回list

您可以使用內置的 Python 集合理解:

import xml.etree.ElementTree as ET

xmlTree = ET.parse('myXMLFile.xml')
tags = {elem.tag for elem in xmlTree.iter()}

如果你特別需要一個列表,你可以將它轉換為一個列表:

import xml.etree.ElementTree as ET

xmlTree = ET.parse('myXMLFile.xml')
tags = list({elem.tag for elem in xmlTree.iter()})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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