2011-01-27 97 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

相關問題