如何在Nokogiri节点中创建子元素?

时间:2016-12-16 20:43:54

标签: ruby xml ruby-on-rails-4 nokogiri children

我正在使用Rails 4.2.7与Nokogiri。我在创建子节点时遇到了麻烦。我有以下代码

general = doc.xpath("//lomimscc:general")
description = Nokogiri::XML::Node.new "lomimscc:description", doc
string = Nokogiri::XML::Node.new "lomimscc:string", doc
string.content = scenario.abstract
string['language'] = 'en'
description << string
general << description

我希望“description”元素是“general”元素的子元素(同样我希望“string”元素是“description”元素的子元素)。然而,正在发生的是描述元素作为一般元素的兄弟出现。如何使元素显示为孩子而不是兄弟?

2 个答案:

答案 0 :(得分:2)

tutorials显示了如何执行此操作,但简单的示例是:

require 'nokogiri'

doc = Nokogiri::XML('<root/>')
doc.at('root').add_child('<foo/>')
doc.to_xml # => "<?xml version=\"1.0\"?>\n<root>\n  <foo/>\n</root>\n"

使用包含要添加的标记或节点的字符串,Nokogiri可以轻松构建节点。

你应该能够轻松地构建它。

答案 1 :(得分:0)

当我改变时

general = doc.xpath("//lomimscc:general")

general = doc.xpath("//lomimscc:general").first

然后一切都可以创建子节点。