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

时间:2011-01-27 22:54:54

标签: ruby xml nokogiri

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

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

REXML用于设置单/双引号:

doc.context[:attribute_quote] = :quote 

我找不到类似的nokogiri。

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

1 个答案:

答案 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,看看你能得到什么样的嫩心。 :)