我正在尝试使用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将全部标签放在零值附近?
答案 0 :(得分:8)
SaveOptions :: 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>