ruby - 使用 Nokogiri::XML::Builder 添加元素

标签 ruby xml nokogiri

我有以下代码:

builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
  xml.myRoot do |xml|
    xml.oneChild
    xml.anotherChild
  end
end

现在我想使用构建器将几个子节点附加到 myRoot(在第二步中,我知道如何直接附加它们)。我该怎么做?

我已经试过了:

node = builder.doc.xpath('//myRoot/oneChild').first
Nokogiri::XML::Builder.with(node) do |xml|
  xml.childOfOneChild 'Im a child of oneChild'
end

这是行不通的。他们不会粘在元素上,它只是一个空的 oneChild。

最佳答案

您的代码生成以下 XML,似乎符合您的规范。无论如何,它不会产生空的 oneChild。如果这不是您想要的,您能告诉我们您的理想输出是什么吗?:

builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
  xml.myRoot do |xml|
    xml.oneChild
    xml.anotherChild
  end
end

puts builder.to_xml

# <?xml version="1.0" encoding="UTF-8"?>
# <myRoot>
#   <oneChild/>
#   <anotherChild/>
# </myRoot>   

node = builder.doc.xpath('//myRoot/oneChild').first
Nokogiri::XML::Builder.with(node) do |xml|
  xml.childOfOneChild 'Im a child of oneChild'
end

puts builder.to_xml

# <?xml version="1.0" encoding="UTF-8"?>
# <myRoot>
#   <oneChild>
#     <childOfOneChild>Im a child of oneChild</childOfOneChild>
#   </oneChild>
#   <anotherChild/>
# </myRoot>

关于ruby - 使用 Nokogiri::XML::Builder 添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596210/

相关文章:

ruby - 执行嵌套 for 循环的最不冗长的方法是什么?

ruby - 关于方法中变量引用的简单 Ruby 难题

java - 使用 java 将 XML 转换为 XLSX,反之亦然

html - 抓取时如何避免加入来自节点的所有文本

ruby-on-rails - Bundler - 找不到 Nokogiri gem 的兼容版本

ruby - clojure 中的屏幕抓取

ruby-on-rails - 如何将数组分解为字符串 MVC?

ruby-on-rails - 使用模型用户和配置文件 + Omniauth Facebook 进行设计

c# - 如何使用 XElement 在标签之间添加值?

java - 如何使用 apache commons 配置(java)加载 xml 文件?