2013-12-19 4 views
5

Ich versuche ein XML-Dokument mit Nokogiri aufzubauen. Bis jetzt ist alles ziemlich normal; die meisten meiner Code sieht nur so etwas wie:Leere XML-Tags mit Nokogiri erstellen?

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 

jedoch, dass die Ergebnisse in einem Tag wie <Tag4/> statt <Tag4></Tag4>, das, was Anwender mein Ende hat festgelegt, dass der Ausgang sein muss.

Wie sage ich Nokogiri, um volle Tags um einen Nullwert zu setzen?

Antwort

8

SaveOptions :: NO_EMPTY_TAGS werden Sie bekommen, was Sie wollen.

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) 

Ausgang:

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

* + 1 * ... Ausgezeichnet ... –