2010-11-18 96 views
1
>> h={:title => "hi & mv288" } 
=> {:title=>"hi & mv288"} 
>> h.to_xml 
=> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n <title>hi &amp;amp; mv288</title>\n</hash>\n" 
>> Hash.from_xml h.to_xml 
=> {"hash"=>{"title"=>"hi & mv288"}} 

如果您发现线#2,#4,在标题值&amp;字符 一系列Hash.to_xml和from_xml方法调用后成为&。Hash.from_xml双逃逸&

有什么办法可以防止Hash.from_xml将&amp;转换为&。

+0

在我的本地测试中,'Hash.from_xml h.to_xml'给了我原始结果'{:title =>“hi & mv288”}'...... – PeterWong 2010-11-18 02:24:26

+0

emm ...我正在使用jruby- 1.5.2/jdk1.6.0_21。你正在使用哪个版本? – 2010-11-18 02:26:59

+0

和rails v2.3.9,ruby 1.8.7 – 2010-11-19 01:50:38

回答

1

我们将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来解决这个问题。