使用Nokogiri构建空白XML标签?

Bry*_*yce 5 ruby xml nokogiri

我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)

但是,这导致了一个标记,<Tag4/>而不是<Tag4></Tag4>,这是我的最终用户指定输出所需的.

如何告诉Nokogiri将全部标签放在零值附近?

Nic*_*eys 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)
Run Code Online (Sandbox Code Playgroud)

输出:

(511)-> ruby derp.rb 
broken:
<?xml version="1.0"?>
<blah/>
fixed:
<?xml version="1.0"?>
<blah></blah>
Run Code Online (Sandbox Code Playgroud)