【问题标题】:How to add an attribute to Nokogiri XML builder?如何向 Nokogiri XML 构建器添加属性?
【发布时间】:2023-03-27 13:10:01
【问题描述】:

这就是我想要做的:

xml = Nokogiri::XML::Builder.new do |x|
  x.root do
    x.book do
      x.attribute('isbn', 12345) # Doesn't work!
      x.text("Don Quixot")
    end
  end
end.doc

我知道我可以做到x.book(isbn: 12345),但这不是我想要的。我想在do/end 块中添加一个属性。有可能吗?

预期的 XML:

<root>
  <book isbn="12345">Don Quixot</book>
</root>

【问题讨论】:

  • 您可以手动创建一些 XML 来让我们直观地了解您要创建的内容吗?
  • @ddubs 刚刚更新了答案,见上

标签: ruby nokogiri


【解决方案1】:

像这样给节点添加属性

xml = Nokogiri::XML::Builder.new do |x|
  x.root do
    x.book(isbn: 1235) do
      x.text('Don Quixot')
    end
  end
end.doc

或者,在重新阅读您的问题后,您可能想在 do 块中进一步将其添加到父级。在这种情况下,这是可行的:

xml = Nokogiri::XML::Builder.new do |x|
  x.root do
    x.book do
      x.parent.set_attribute('isbn', 12345)
      x.text('Don Quixot')
    end
  end
end.doc

生成:

<?xml version="1.0"?>
<root>
  <book isbn="1235">Don Quixot</book>
</root>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多