一重引用符または二重引用符を使用して XML 属性を定義できるという事実にもかかわらず、私のユーザーは、単一引用符で囲まれた属性値を受け入れない別のソフトウェアとソフトウェアを統合しようとしています。
私は REXML を使用して XML を生成しています。
二重引用符で囲まれた属性値を REXML で生成する方法はありますか? そうでない場合、簡単に変換する方法はありますか?
ありがとう
一重引用符または二重引用符を使用して XML 属性を定義できるという事実にもかかわらず、私のユーザーは、単一引用符で囲まれた属性値を受け入れない別のソフトウェアとソフトウェアを統合しようとしています。
私は REXML を使用して XML を生成しています。
二重引用符で囲まれた属性値を REXML で生成する方法はありますか? そうでない場合、簡単に変換する方法はありますか?
ありがとう
2007 年 2 月現在、引用文字を決定する方法がサポートされています。変更は 2007 年 7 月に Ruby ソースにマージされ、1.8.6-p110 以降のすべてのバージョンで利用できるはずです。
require 'rexml/document'
doc = REXML::Document.new
doc.context[:attribute_quote] = :quote # <-- Set double-quote as the attribute value delimiter
root = doc.add_element('root')
root.add_attribute('val', '123')
doc.write(STDOUT)
実行すると、次の結果が得られます。
$ ruby test.rb
<root val="123"/>
$
これを行うためにこのコードを見てきました。しかし、これは 2003 年のメーリング リストの投稿によるもので、より洗練された (サポートされている) 方法も約束しています。最善ではないかもしれませんが、うまくいく可能性があります。試してみてください。
REXML::Attribute.class_eval( %q^
def to_string
%Q[#@expanded_name="#{to_s().gsub(/"/, '"')}"]
end
^ )