本文介绍了使用 Nokogiri 构建空白 XML 标签?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 Nokogiri 构建一个 XML 文档.到目前为止,一切都非常标准;我的大部分代码看起来像:

I'm trying to build up an XML document using Nokogiri. Everything is pretty standard so far; most of my code just looks something like:

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

然而,这会产生一个类似 ,这是我的最终用户所拥有的指定输出需要.

However, that results in a tag like <Tag4/> instead of <Tag4></Tag4>, which is what my end user has specified that the output needs to be.

我如何告诉 Nokogiri 在 nil 值周围放置完整的标签?

How do I tell Nokogiri to put full tags around a nil value?

推荐答案

SaveOptions::NO_EMPTY_TAGS 将得到你想要的.

SaveOptions::NO_EMPTY_TAGS will get you what you want.

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>

这篇关于使用 Nokogiri 构建空白 XML 标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 06:13