Nokogiri使用双引号保存XML属性,即使它读取的DOM有单引号。 这当然是完全合法的,但它引入了令人烦恼的文件内容更改,即使DOM没有改变,也让diff和git等工具更难弄清楚发生了什么。
我可以强制它使用单引号(或者更好,如果没有修改,保留原文中的引用样式)?
REXML用于设置单/双引号:
doc.context[:attribute_quote] = :quote
我找不到类似的nokogiri。
是否可以使用单引号保存文档?
答案 0 :(得分:2)
看起来答案是否定的;不是因为图书馆目前正在编写,也可能根本没有。跟踪节点序列化的调用路径:
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的支配了。谷歌搜索libxml serialize single quote attributes并没有立即发现任何吸烟枪。
我认为你应该file a feature request,看看你能得到什么样的嫩心。 :)