2017-01-25 51 views
0

我有一個Nokogiri::XML::Builder例如,當我打電話to_xml它產生以下結構:節點添加到XML使用引入nokogiri :: XML ::生成器

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <item>...</item> 
    <item>...</item> 
</root> 

使用這種情況下,我想補充一個<item><root>下節點是這樣的:

def add_static_job(builder) 
    source = builder.doc.root 
    item = Nokogiri::XML::Node.new('item', source) 
    item.content = '<title>Hello</title>' 
    source << item 
end 

可惜的是這不會產生有效的XML到底,而像這樣:

<item>&lt;title&gt;Hello&lt;title&gt;</item> 

問題是什麼?

回答

0

你可以做2個步驟:

  • 創建標題節點用 「你好」 作爲內容
  • 創建項目節點與標題內容

xml = '<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <item>A</item> 
    <item>B</item> 
</root>' 

require 'nokogiri' 

doc = Nokogiri::XML.parse(xml) 

source = doc.root 

title = Nokogiri::XML::Node.new('title', doc) 
title.content = "Hello" 

item = Nokogiri::XML::Node.new('item', doc) 
item << title 

source << item 

puts doc 

# => 
# <?xml version="1.0" encoding="UTF-8"?> 
# <root> 
# <item>A</item> 
# <item>B</item> 
# <item><title>Hello</title></item></root>