如何以遞歸方式匹配包含文本的所有子節點。XPath匹配包含文本的每個節點
如果我有一棵樹一樣
table
tr
td
"hello"
td
b
"hi"
tr
td
"salud"
td
em
"bonjour"
如何使用XPath表節點中的每一個字符串匹配嗎? 就像「// table/*/text()」?
如何以遞歸方式匹配包含文本的所有子節點。XPath匹配包含文本的每個節點
如果我有一棵樹一樣
table
tr
td
"hello"
td
b
"hi"
tr
td
"salud"
td
em
"bonjour"
如何使用XPath表節點中的每一個字符串匹配嗎? 就像「// table/*/text()」?
你給XPath表達式幾乎已正確:
//table//text()
將讓你的所有表中的所有文本節點在文件中。
以下情況如何?
from lxml import etree
from StringIO import StringIO
input = '''
<table>
<tr>
<td>hello</td>
<td><b>hi</b></td>
</tr>
<tr>
<td>salud</td>
<td><em>bonjour</em></td>
</tr>
</table>
'''
parser = etree.HTMLParser()
tree = etree.parse(StringIO(input), parser)
for p in tree.xpath("//table/tr/td//text()"):
print p
...這給輸出:
hello
hi
salud
bonjour
如果我想要節點的名稱而不是節點的文本怎麼辦? – 2018-01-03 20:33:14
+1正確答案。 – 2011-04-09 13:52:18
+1我也需要這個 – 2011-08-04 07:10:57