ruby - 使用 XPath 选择根和子匹配表达式

标签 ruby xml xpath nokogiri

我正在使用 Nokogiri 来解析一些看起来像这样的 XML:

<item name="item one">
    <other name="other name"/>
    <third />
</item>
<item name="item two">
    <other />
    <third />
</item>

我正在使用 Nokogiri 解析项目,如下所示:

xmldoc.xpath("//item").each do |node|
  node.xpath("//*[@name]") # Gives me *all* elements in the doc
  node.xpath(".//*[@name]") # Gives me child elements of the item
end

当我迭代时,我可以使用什么表达式从第一个节点获取[item, other]

最佳答案

开头的 . 将使 XPath 表达式特定于上下文,使用 @ 获取属性,@* 获取所有属性属性(通配符):

node.xpath(".//*/@*")
node.xpath("@*")

并且,获取当前节点的所有属性以及所有子节点的所有属性:

node.xpath(".//@*")

关于ruby - 使用 XPath 选择根和子匹配表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36412067/

相关文章:

arrays - Ruby:如何在数组中的每个项目之间插入一个值?

ruby-on-rails - 外键和 Mongoid

xml - 在 zend 表单中定义 <multicheckbox> 表单元素的正确 xml 语法是什么

xml - 无法让 EclipseLink MOXy 工作

RS Selenium : replacing xpath with variable in R

xml - XSLT 列出多个值

ruby - 在此 ruby​​ 数据库查询中意外替换 SQL 占位符

ruby-on-rails - rails 服务器命令的问题

javascript - 是否可以改编以下 jQuery?

xml - XSLT 根据另一个值添加属性值