2013-12-19 55 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 * ... ...优秀 –