为什么以下 Nokogiri/XPath 代码会删除节点内的标签


进入

的文档具有这样的结构:

<span class="footnote">Hello there, <a href="http:google.com">link</a></span>

XPath 搜索是:

@doc = set_nokogiri(html)
footnotes = @doc.xpath(".//span[@class = 'footnote']")
footnotes.each_with_index do |footnote, index|
    puts footnote
end

上面的脚注变为:

<span>Hello there, link</span>

我认为我的XPath是错误的,但我很难弄清楚原因。

我在输出中有错误的标签,应该更加小心。关键是<a>标签被剥离,但其内容仍然包含在内。

我还添加了set_nokogiri行,以防相关。

我无法复制问题:

require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<span class="footnote">Hello there, <a href="http:google.com">link</a></span>
EOT
footnotes = doc.xpath(".//span[@class = 'footnote']")
footnotes.to_xml # => "<span class="footnote">Hello there, <a href="http:google.com">link</a></span>"
footnotes.each do |f|
  puts f
end
# >> <span class="footnote">Hello there, <a href="http:google.com">link</a></span>

另一个问题是 <a> 标记具有无效的href URL。

<a href="http:google.com">link</a>

应该是:

<a href="http://google.com">link</a>

相关内容

  • 没有找到相关文章

最新更新