2011-01-27 7 views
2

Nokogiriは、読み込まれたDOMが一重引用符を持っていても、二重引用符でXML属性を保存します。 これはまったく正当なものですが、DOMが変更されていない場合でもファイルの内容に煩わしい変更が加えられ、diffやgitなどのツールでは何が起きたか把握するのが難しくなります。nokogiriはxmlを保存する際に属性の一重引用符を使用できますか?

一重引用符を使用するように強制できますか(または何も変更されていない場合は元の引用スタイルをそのまま使用してください)。

REXMLは、単一/二重引用符を設定するためにこれを持っている:私は鋸山のために類似した何かを見つけることができませんでした

doc.context[:attribute_quote] = :quote 

一重引用符で文書を保存することはできますか?

+0

元の中にあったクォート様式をそのまま残しておいてください "_ Nokogiriは属性の引用スタイルを保持できますか?"(http://stackoverflow.com/q/8424858/405017) – Phrogz

答えて

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と思って、どのような種類のテンダーロビンが得られるかを見てください。 :)

+0

悲しいことに私は同じ結論を出して、元のアプリに戻って、二重引用符だけを使ってノコギリを幸せにしました: - / – taw

関連する問題