nokogiri可以在保存xml时使用单引号属性吗?

Nokogiri使用双引号保存XML属性,即使它读取的DOM具有单引号。 这当然是完全合法的,但它引入了令人烦恼的文件内容更改,即使DOM没有改变,这使得像diff和git这样的工具更难以弄清楚发生了什么。

我可以强制它使用单引号(或者甚至更好,如果没有修改,保留原始中的任何引用样式)?

REXML用于设置单/双引号:

doc.context[:attribute_quote] = :quote 

我找不到与nokogiri类似的东西。

是否可以使用单引号保存文档?

看起来答案是否定的; 不是因为图书馆目前正在编写,也许根本没有。 跟踪节点序列化的调用路径:

  • 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序列化单引号属性不会立即出现任何吸烟枪。

我认为你应该提交一个function请求 ,看看你能得到什么样的招标。 🙂