1

如何递归匹配所有包含文本的子节点。

如果我有一棵树

table
 tr
  td
   "hello"
  td
   b
    "hi"
 tr
  td
   "salud"
  td
   em
    "bonjour"

如何将表节点中的每个字符串与 xpath 匹配?像“//table/*/text()”这样的东西?

4

2 回答 2

3

您给出的 XPath 表达式已经几乎是正确的:

//table//text()

将为您提供文档中所有表格中的所有文本节点。

于 2011-04-09T10:52:04.267 回答
0

下面的呢?

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
于 2011-04-09T06:59:37.110 回答