2013-12-19 100 views
5

我想使用Nokogiri構建一個XML文檔。到目前爲止,一切都很標準;我的大部分代碼只是看起來是這樣的:用Nokogiri構建空白的XML標籤?

builder = Nokogiri::XML::Builder.new do |xml| 
    ... 
    xml.Tag1(object.attribute_1) 
    xml.Tag2(object.attribute_2) 
    xml.Tag3(object.attribute_3) 
    xml.Tag4(nil) 
    end 

builder.to_xml 

然而,這導致像<Tag4/>代替<Tag4></Tag4>標籤,這是我的最終用戶指定的輸出要求是。

我該如何告訴Nokogiri將全部標籤放在零值附近?

回答

8

​​3210 :: NO_EMPTY_TAGS會給你你想要的。

require 'nokogiri' 

builder = Nokogiri::XML::Builder.new do |xml| 
    xml.blah(nil) 
end 

puts 'broken:' 
puts builder.to_xml 
puts 'fixed:' 
puts builder.to_xml(save_with: Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS) 

輸出:

(511)-> ruby derp.rb 
broken: 
<?xml version="1.0"?> 
<blah/> 
fixed: 
<?xml version="1.0"?> 
<blah></blah> 
+0

* + 1 * ... ...優秀 –