使用Savon时格式化Web Service的响应XML

时间:2014-01-14 00:24:48

标签: ruby web-services savon

我正在使用我使用Savon gem消费的外部Web服务。

希望处理WebService的响应,在Savon 之前,以便清理XML并获得正确的Hash。目前,Savon调用方法,用Hash回答:

{:envelope => {
     :body => {
         :get_method_result => {
             :result=>"OK", 
                 :dataset_xml => "
                     <NewDataSet>
                         <xs:schema id=\"NewDataSet\" xmlns=\"\"........

dataset_xml有一个XML字符串后,你可以看到。所以我必须接受它并处理它以获得完整的哈希。

所有这一切都发生了,因为我的回复就像:&lt;NewDataSet&gt;\r\n &lt;xs:schema id=\"NewDataSet\" xmlns=\里面的XML,如果我能够修复,那么我就不需要做所有的后续处理来把它变成哈希。

2 个答案:

答案 0 :(得分:0)

你可以简单地尝试使用nokogiri gem解析你自己的xml。你已经试过了吗?

我会尝试

Nokogiri::XML(response[:body])

答案 1 :(得分:0)

一位朋友解决了这个问题,他向Apache添加了一个名为mod_substitute的模块。我用它来解析传入的XML,提取CDATA字符。随着完成,Savon gem获得了一个干净的XML,它一步完美地解析为Hash。

<Location />
    AddOutputFilterByType SUBSTITUTE text/html
    Substitute "s|CDATAREGEX|' '|i"
</Location>