确定Nokogiri元素的子索引

jpa*_*kal 3 ruby xml parent-child nokogiri

如果我有一个Nokogiri :: XML :: Element,我如何计算其子索引与其父级相关?那是:

<foo>     <-- parent
  <bar/>  <-- 1st child
  <bar/>  <-- 2nd child
</foo>
Run Code Online (Sandbox Code Playgroud)

在Javascriptland中,jQuery有index(),但Nokogiri没有.引入nokogiri确实提供了一个路径的方法,但返回的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
Run Code Online (Sandbox Code Playgroud)

pgu*_*rio 7

怎么样:

element.parent.children.index(element)
Run Code Online (Sandbox Code Playgroud)

仅考虑非文本节点:

element.xpath('../*').index(element)
Run Code Online (Sandbox Code Playgroud)

仅考虑条形节点:

element.xpath('../bar').index(element)
Run Code Online (Sandbox Code Playgroud)