前述のように、ライブラリ_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) # indent this by tab, not two spaces as I did here
# 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 set comprehension:
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()})