【问题标题】:Find tag with id including [] with Nokogiri使用 Nokogiri 查找 id 包括 [] 的标签
【发布时间】:2009-08-05 21:09:58
【问题描述】:

我有一个 html 元素,例如:

<div id="spam[500]">

我想通过 id 搜索这个元素,但似乎 nokogiri 被 [] 弄糊涂了。我正在尝试:

doc.css("#spam[#{eggs.id}]")

但无济于事。

【问题讨论】:

    标签: ruby-on-rails nokogiri


    【解决方案1】:

    克里斯,试试这个,让我知道它是否有效:

    doc = Nokogiri::HTML(page)
    el = doc.xpath("//div[@id='spam[500]']").first
    

    问题是您无法通过 CSS(即使在浏览器中)访问它。尝试为“spam[500]”设置一些 CSS 属性,它们将不会被应用。但是,您可以通过 xpath 访问,如上所示。

    【讨论】:

      【解决方案2】:

      这里真正的问题是字符 [ 和 ] 在 HTML4(或 XML)id 属性中是非法的 - 请查看以下内容:

      http://www.w3.org/TR/html401/types.html#type-name

      (有关 id 属性的规范定义,请参见 www.w3.org//TR/html401/struct/global.html#adef-id)

      【讨论】:

        【解决方案3】:

        你也可以这样做

        el = doc.xpath("id(spam[500])").first
        

        对于具有 id 的元素,您可以直接通过 id 调用它们,因为它始终是唯一的。

        要查找 xpath,请在 firefox 中添加一个“xpath 检查器”插件。它很有帮助,而且非常简单

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-17
          • 2017-05-22
          • 2021-02-20
          • 2014-07-10
          • 2014-10-06
          • 2017-05-18
          相关资源
          最近更新 更多