考虑xml
结构,如下所示
<p class="long">
<i>Malicious</i>
" is the adjective based on the noun "
<i>malice</i>
", which means the desire to harm others. Both words come from the latin word "
</p>
我想选择<p>
标记内的所有文字。
我试过
examples = tree.xpath('//p[@class="long"]/text()')
但是,由于某种原因,<i>
标记之间的所有文本都会被忽略。
提取<p>
标记内的所有文本的正确方法是什么,无论它是否也包含在其他嵌套标记中?
答案 0 :(得分:1)
除非您有非常特殊的要求,否则请避免使用text() - 正是出于这个原因。您可能对p
元素的字符串值感兴趣,而不是对其子文本和元素节点感兴趣。具体如何选择这取决于环境(你的XPath API是否允许返回一个字符串而不是一个节点集?它是否支持XPath 2.0?你的路径表达式是否选择了多个&#34; p&#34;元素?可以你只需返回p
元素,然后在主机应用程序中获取它的字符串值吗?)
答案 1 :(得分:0)
尝试
examples=tree.xpath('//p[@class="long"]//text()')
(使用text()
之前的双斜杠,它也匹配非直接子节点的节点)