Nokogiri:用标签包装顶级文本元素<p>



在为未被其他标记包含的"裸"文本节点构建XPath选择器时遇到问题。我想改变这个:

some naked text <p>some wrapped text</p> more naked text

这:

<p>some naked text</p> <p>some wrapped text</p> <p>more naked text</p>

我尝试使用doc.xpath("//child::text()").wrap('<p></p>'),但这似乎抓住所有文本节点,而不仅仅是顶层的。

doc.xpath('/html/body/text()').wrap('<p/>')

当您使用//时,您选择的是descendant-or-self轴,即文档中的任何位置。相反,您希望使用/和(默认的child轴)只匹配作为特定元素的直接子元素的文本节点。

如果这不是一个包含<html><body>元素的HTML文档,那么只需:

doc.xpath('/*/text()').wrap('<p/>')

将选择根XML元素(无论其名称如何)的所有子文本元素。

你可以找到除了段落内的所有文本。

'//text()[not(ancestor::p)]'

相关内容

  • 没有找到相关文章

最新更新