2
我有以下XML:沒有條件在XPath
<test1>
<test2>
<text>This is a question on xpath
</text>
</test2>
<test3>
<test2>
<text>Do not extract this
</text>
</test2>
</test3>
</test1>
我需要內test2/text
提取文本但如果test2
來自內部test3
。這怎麼能在xpath中完成?我試着用findall
的東西,如:
for p in lxml_tree.xpath('.//test2',namespaces={'w':w}):
for q in p.iterancestors():
if q.tag=="test3":
break
else:
text+= ''.join(t.text for t in p.xpath('.//text'))
但這不起作用。我猜想xpath在單個表達式中有一個更好的方法來排除它。
預期輸出:
text = "This is a question on xpath"
很好,工作!這可以在findall中使用嗎? – 2014-12-13 09:31:47
我不是pythonista,但結果是一個'nodeset',而lxml似乎是一個健壯的庫,所以我可以想象這可以在lxml_tree.xpath('.// test2 [not(ancestor: :TEST3)] /文本')' – StuartLC 2014-12-13 09:34:27