У меня есть xml;Найти родительский узел без корня, где дочерний элемент содержит текст
<root>
<parent>
<child>foo987654</child>
</parent>
<parent>
<child>bar15245</child>
</parent>
<parent>
<child>baz87742</child>
</parent>
<parent>
<child>foo123456</child>
</parent>
</root>
Я использую питон и модуль etree, и я хотел бы, чтобы выбрать все узлы <parent>
которых ребенок начинает с «Foo». Я знаю, что у etree ограниченная поддержка xpath, но я новичок в xpath, поэтому я стараюсь приземлиться на лучшее решение. Я думаю, что что-то по этому поводу
parent[(contains(child,'foo'))]
, но я хотел бы отказаться от родительских узлов, содержащих Foo, но не начинаются с Foo (т.е. <child>125456foo</child>
), поэтому я не уверен, что это будет работать. Кроме того, я не уверен, что etree поддерживает этот уровень ... XPath
EDIT:
Другим приемлемым решением было бы выбрать родителей, чьи детские текст в списке. псевдо-код parent => child [text = "foo1" || "bar1" || "bar2"]
Возможно ли это?
NINJA! Я предполагаю, что это будет чувствительно к регистру, да? – Brad
@Brad XML действительно чувствителен к регистру. –
@Brad: Вы позвонили? –