Может ли nokogiri использовать одинарные кавычки для атрибутов при сохранении XML? - PullRequest
2 голосов
/ 28 января 2011

Nokogiri сохраняет атрибуты XML с двойными кавычками, даже если в прочитанном им DOM были одинарные кавычки.Конечно, это абсолютно законно, но вносит раздражающие изменения в содержимое файла, даже когда DOM не менялся, и таким инструментам, как diff и git, становится сложнее выяснить, что произошло.

Можно ли заставить его использоватьодинарные кавычки (или, что еще лучше, сохранить стиль цитирования, который был в оригинале, если ничего не было изменено)?

REXML имеет это для установки одинарных / двойных кавычек:

doc.context[:attribute_quote] = :quote 

Я не могНичего похожего нет для nokogiri.

Можно ли сохранить документы в одинарных кавычках?

1 Ответ

2 голосов
/ 28 января 2011

Похоже, ответ нет;не так, как библиотека в данный момент написана, а может и не совсем.Трассировка пути вызова для сериализации узла:

  • Nokogiri::XML::Node#to_s вызовы to_xml
  • Nokogiri::XML::Node#to_xml вызовы serialize (задает несколько параметров по умолчанию)
  • Nokogiri::XML::Node#serialize звонки write_to
  • Nokogiri::XML::Node#write_to звонки native_write_to
  • Nokogiri::XML::Node#native_write_to звонки native_write_to, что выглядит следующим образом:

& bsp;

def native_write_to(io, encoding, indent_string, options)
  set_xml_indent_tree_output 1
  set_xml_tree_indent_string indent_string
  savectx = LibXML.xmlSaveToIO(IoCallbacks.writer(io), nil, nil, encoding, options)
  LibXML.xmlSaveTree(savectx, cstruct)
  LibXML.xmlSaveClose(savectx)
  io
end

Итак, вы находитесь в зависимости от libxml на данный момент.Поиск в Google для libxml сериализации атрибутов с одинарными кавычками не приводит к немедленному включению курящих пистолетов.

Я думаю, вам следует подать запрос на добавление функции и посмотреть, что за предложениеможно получить.:)

...