Nokogiri - 如何命名节点“注释”?

时间:2018-02-05 17:33:18

标签: ruby nokogiri

我正在使用Nokogiri创建一些XML:

def builder
  Nokogiri::XML::Builder.new do |xml|
    xml.foobar do
      xml.comment('Some comment', created_at: Time.zone.now.iso8601)
    end
  end
end

我想要这个结构:

<foobar>
  <comment created_at='...'>
   Some comment
  </comment>
</foobar>

不幸的是,Nokogiri DSL不允许我命名节点comment,因为它是创建XML-Comments的内部方法。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

来自文档:http://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/Builder

  

不幸的是,某些方法在ruby中定义,难以去除或有危险。例如,您可能想要创建名称为“type”,“class”和“id”的标签。在这种情况下,您可以使用下划线来消除方法调用中的标记名称。

因此你需要:

def builder
  Nokogiri::XML::Builder.new do |xml|
    xml.foobar do
      xml.comment_('Some comment', created_at: Time.zone.now.iso8601)
    end
  end
end