使用 xPath 从父节点和后代节点中提取文本

Extract text from parent node and descendant nodes w/ xPath

如果我在 XML 文件中有这些标签:

<a> Hello, I would like
   <b> to eat, please. </b>
</a>

或这些(更复杂):

<a> Hello, 
   <b class="A"> I would like</b>
   <b> to </b>
   <b/>
   eat, please.
</a>

,我该如何从 ab 中提取文本,以便输出为:

Hello, I would like to eat, please.


我最接近使用 .//b[preceding-sibling::text()],但这给了我一个或另一个的文本,而不是组合它们。

不知道这是否重要,但我在 python 中执行此操作,因此代码将是 element.xpath('string(.//b[preceding-sibling::text()])') 使用 lxml。

这个 XPath,

normalize-space(/a)

将return a 元素的space-归一化string value

Hello, I would like to eat, please.

根据要求。