使用JRuby 1.5.6和nokogiri(JRuby为1.5.0.beta.3)
我正在尝试构建一个XML,但所有没有子节点的兄弟元素都在同一行上输出。我在to_xml选项中遗漏了什么吗?
builder.rb
require 'Nokogiri'
builder = Nokogiri::XML::Builder.new do |xml|
xml.root do
xml.GUID "foo"
xml.IDInInfoSource "bar"
end
end
期望的输出
<root>
<GUID>foo</GUID>
<IDInInfoSource>bar</IDInInfoSource>
</root>
生成输出
<root>
<GUID>foo</GUID><IDInInfoSource>bar</IDInInfoSource>
</root>
答案 0 :(得分:1)
这对我有用:
require 'nokogiri'
builder = Nokogiri::XML::Builder.new do |xml|
xml.root do
xml.Entity "xsi:type"=>"ValidEntityTypeForCCOMClass" do
xml.GUID 'DEADBEEF'
xml.IDInInfoSource "Hi Mom"
end
end
end
puts builder.to_xml
#=> <?xml version="1.0"?>
#=> <root>
#=> <Entity xsi:type="ValidEntityTypeForCCOMClass">
#=> <GUID>DEADBEEF</GUID>
#=> <IDInInfoSource>Hi Mom</IDInInfoSource>
#=> </Entity>
#=> </root>
如果它适合您,请提供简单,可重复的测试用例。 (由于依赖于尚未包含的数据和库,上面的代码无法运行。)
如果它不适合您,请列出您的Ruby和Nokogiri版本。
编辑:我确认在使用jRuby 1.5.6和Nokogiri 1.5.0.beta.4时,我看到与OP相同的无换行结果。 Ruby 1.9.2和Nokogiri 1.5.0.beta.4上也没有出现同样的问题。我认为这与libxml2与纯Java Nokogiri的行为有所区别。
编辑2 :我filed a Nokogiri bug为此。从该错误报告中注意到一件有趣的事情:jRuby版本的输出在文档不存在于其他文档之后有一个额外的换行符。