Python XML ElementTree标记通配符

如何添加通配符到xml TAG搜索? 我正在尝试使用Python的xml.elementTree库查找当前XML节点的所有子标记,标记是以“MYTAG”开头的。 XML看起来像:

ROOT
   FOO
   BAR
   MYTAG1
   MYTAG2

我试过了

xmlTree = xmlET.parse('XML_FILE')
xmlRoot = xmlTree.getroot()
MYTags = xmlRoot.findall('MYTAG{*}')

使用此工作正确,但当然只返回一个元素,而不是两个。

xmlRoot.findall('MYTAG1')

由于xpath支持在xml中非常有限,因此一种选择是使用getchildren()并使用标记startswith返回节点:

import xml.etree.ElementTree as ET
from StringIO import StringIO

# sample xml
s = '<root><mytag1>hello</mytag1><mytag2>world!</mytag2><tag3>nothing</tag3></root>'
tree = ET.parse(StringIO(s))
root = tree.getroot()
# using getchildren() within root and check if tag starts with keyword 
print [node.text for node in root.getchildren() if node.tag.startswith('mytag')]

结果:

['hello', 'world!']
链接地址: http://www.djcxy.com/p/58801.html

上一篇: Python XML ElementTree tag wildcard

下一篇: XML Parsing w/ Python Element Tree