Hash.from_xml双逃逸&
问题描述:
>> h={:title => "hi & mv288" }
=> {:title=>"hi & mv288"}
>> h.to_xml
=> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <title>hi &amp; mv288</title>\n</hash>\n"
>> Hash.from_xml h.to_xml
=> {"hash"=>{"title"=>"hi & mv288"}}
如果您发现线#2,#4,在标题值&
字符 一系列Hash.to_xml和from_xml方法调用后成为&。Hash.from_xml双逃逸&
有什么办法可以防止Hash.from_xml将&
转换为&。
答
我们将xml解析器切换到Nokogiri来解决此问题。
在你的environment.rb
ActiveSupport::XmlMini.backend = 'Nokogiri'
你必须有安装,虽然创业板引入nokogiri添加此行。如果你需要一个纯粹的 java实现nokogiri,请检查一下。 https://github.com/tenderlove/nokogiri/wiki/pure-java-nokogiri-for-jruby
安装命令,
gem install nokogiri --pre
您也可以使用LibXml
为XmlMiini.backend来解决这个问题。
在我的本地测试中,'Hash.from_xml h.to_xml'给了我原始结果'{:title =>“hi & mv288”}'...... – PeterWong 2010-11-18 02:24:26
emm ...我正在使用jruby- 1.5.2/jdk1.6.0_21。你正在使用哪个版本? – 2010-11-18 02:26:59
和rails v2.3.9,ruby 1.8.7 – 2010-11-19 01:50:38