我正在使用我使用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字符串后,你可以看到。所以我必须接受它并处理它以获得完整的哈希。
所有这一切都发生了,因为我的回复就像:<NewDataSet>\r\n <xs:schema id=\"NewDataSet\" xmlns=\
里面的XML,如果我能够修复,那么我就不需要做所有的后续处理来把它变成哈希。
答案 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>