css - 按照元素在文档中出现的顺序获取元素

标签 css ruby xpath nokogiri

我有一个文档,想提取几个元素,这些元素是父元素的直接后代,但忽略了其他元素。 问题是我没有按照它们在文档中出现的顺序获取元素。 原因实际上可能是我使用的 CSS 选择器错误...

require 'rubygems'
require 'nokogiri'
require 'open-uri'

html = <<END
  <content>
    <p>Lorem</p>
    <div>
      FOO
      <p>BAR</p>
    </div>
    <h1>Ipsum</h1>
    <p>Dolor</p>
    <div>
      BAR
      <h2>FOO</h2>
    </div>
    <h2>Sit</h2>
    <p>Amet</p>
  </html>
END

Nokogiri::HTML(html).css('content > p, content > h1, content > h2').inner_html # "<p>Lorem</p><p>Dolor</p><p>Amet</p><h1>Ipsum</h1><h2>Sit</h2>"

我想要的是

<p>Lorem</p><h1>Ipsum</h1><p>Dolor</p><h2>Sit</h2><p>Amet</p>

最佳答案

尝试使用这个 XPath:

//content/p|//content/h1|//content/h2

关于css - 按照元素在文档中出现的顺序获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446801/

相关文章:

ruby - 如何清除 Ruby 中的终端?

ruby - 在 Ruby 中,coerce() 是如何工作的?

xml - 在这种情况下如何添加唯一约束?

html - 如何使元素旁边的小通知计数

javascript - Vanilla JavaScript 根据 <option> 值更改 api 端点

css - bootstrap 3 CSS 背景图像未显示在打印预览中

sql-server - SQL Server XML 文件更新一个节点的值,其中另一个节点的文本为 XXX

css - 有趣的子菜单重叠

ruby - 什么是适合 Rails 3 的测试框架?

python xpath 如何在我的xpath中添加特殊字符?