ruby - 确定 Nokogiri 元素的子索引

标签 ruby xml nokogiri parent-child

如果我有一个 Nokogiri::XML::Element,我如何计算它的子索引相对于它的父索引?即:

<foo>     <-- parent
  <bar/>  <-- 1st child
  <bar/>  <-- 2nd child
</foo>

在 Javascriptland 中,jQuery 有 index() ,但 Nokogiri 没有。 Nokogiri 确实提供了一个 path方法,但返回一个 XPath 字符串,如 "/foo/bar[2]" 并将 bar[1] 截断为 bar 以启动,所以把它变回数字有点麻烦:

element.path.split('/').last.slice(/[0-9]+/) || '1'          # quick'n'dirty
element.path.split('/').last.slice(/\[([0-9]+)\]/, 1) || '1' # a bit safer

最佳答案

怎么样:

element.parent.children.index(element)

只考虑非文本节点:

element.xpath('../*').index(element)

只考虑条形节点:

element.xpath('../bar').index(element)

关于ruby - 确定 Nokogiri 元素的子索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8381383/

相关文章:

xml - 如何在 Xamarin Forms 中添加多个命名空间?

键删除后 ruby​​ 哈希内存泄漏

ruby - Apache + Ruby 类似于 PHP

xml - "where"子句上的 "for"和 "where"子句上的 "let"之间的 XQuery 差异

java - 对文件系统上的 XML 文件进行快速全文搜索。选择什么策略?

html - 如何用新标签包装元素的文本内容?

ruby - bing 和 yahoo 搜索引擎的 Mechanize

ruby - XPath中的 `@attr!="值"` and ` not(@attr ="value")`有什么区别

ruby-on-rails - Rails 助手中的动态方法调用

ruby-on-rails - 无法覆盖设计密码 Controller