JRuby Nokogiri XML builder to_xml не будет выводить символ новой строки для родственных элементов - PullRequest
1 голос
/ 31 января 2011

Использование JRuby 1.5.6 с нокогири (1.5.0.beta.3 для JRuby)

Я пытаюсь создать 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>

1 Ответ

1 голос
/ 31 января 2011

Это работает для меня:

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.

Редактировать : Я подтвердил, что вижу тот же результат без новой строки, что и OP, при использовании jRuby 1.5.6 и Nokogiri 1.5.0.beta.4.Та же проблема не возникает в Ruby 1.9.2 и Nokogiri 1.5.0.beta.4.Я предполагаю, что это различие в поведении libxml2 по сравнению с чистым Java Nokogiri.

Edit 2 : я подал ошибку Nokogiri для этого.Из этого сообщения об ошибке следует отметить одну интересную вещь: вывод версии jRuby содержит дополнительную новую строку после документа , которого нет в других.

...