我有一個XML文件,它具有許多具有相同屬性的不同節點。使用Python 2在XML中按屬性查找所有節點
我想知道是否有可能找到所有這些節點使用Python和任何其他包如minidom或ElementTree。
我有一個XML文件,它具有許多具有相同屬性的不同節點。使用Python 2在XML中按屬性查找所有節點
我想知道是否有可能找到所有這些節點使用Python和任何其他包如minidom或ElementTree。
您可以使用內置的xml.etree.ElementTree
模塊。
如果你想有不管屬性值的特定屬性的所有元素,你可以使用XPath表達式:
//tag[@attr]
或者,如果你在乎值:
//tag[@attr="value"]
示例(使用):
import xml.etree.ElementTree as ET
data = """
<parent>
<child attr="test">1</child>
<child attr="something else">2</child>
<child other_attr="other">3</child>
<child>4</child>
<child attr="test">5</child>
</parent>
"""
parent = ET.fromstring(data)
print [child.text for child in parent.findall('.//child[@attr]')]
print [child.text for child in parent.findall('.//child[@attr="test"]')]
打印:
['1', '2', '5']
['1', '5']
這是一個很好的示例使用xpath /啓動腳本:
# -*- coding: utf-8 -*-
from lxml import etree
fp = open("xml.xml")
tree = etree.parse(fp)
for el in tree.findall('//node[@attr="something"]'):
print(el.text)
感謝球員,我使用的是minidom,似乎它不是如此強大,最終將轉移到ElementTree。 – tinySandy