2015-02-27 3 views
1

Как добавить шаблон в xml TAG-поиск? Я пытаюсь найти всех дочерних узлов текущего узла XML, чей тег начинается с «MYTAG», используя библиотеку xml.elementTree Python. XML выглядит следующим образом:Python XML ElementTree tag wildcard

ROOT 
    FOO 
    BAR 
    MYTAG1 
    MYTAG2 

Я попытался

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

Используя это работает правильно, но, конечно, только возвращает один элемент, а не оба.

xmlRoot.findall('MYTAG1') 
+0

C а вы просто ходите с ** getchildren() ** и проверяете, запускается ли tag ** с **? – Anzel

ответ

4

В качестве 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!'] 
Смежные вопросы