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请求 ,看看你能得到什么样的招标。 🙂