2011-01-27 67 views
2

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

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

REXML有这个设置单/双引号:

doc.context[:attribute_quote] = :quote 

我找不到引入nokogiri类似的事情。

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

+0

关于_“或保留任何引用样式在原来的”_参见[可以Nokogiri保留属性引用样式?](http://stackoverflow.com/q/8424858/405017) – Phrogz 2011-12-08 17:12:41

回答

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,看起来像th是:

&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,看看你能得到什么样的tenderlovin。 :)

+0

可悲的是我来到同样的结论,并回到原来的应用程序,并使它只用双引号来使nokogiri开心: - / – taw 2011-01-29 04:43:01

相关问题