为什么我无法解析格式化的XML?

时间:2015-01-16 13:50:31

标签: ruby-on-rails xml nokogiri rspec-rails savon

我在我的Rails应用中使用teamforge,效果很好。

现在我想测试它,所以我使用的是savon_spec gem。我正在将Soap XML作为固定装置提供。

我没有得到为我直接从soap UI工具中获取的XML解析所需的XML行为,但当我删除格式时,它就像魅力一样。

我不确定为什么它不起作用。在内部,teamforge和savon使用Nokogiri。

我将把两个XML:

如果删除所有空格并将其转换为单行,则按预期工作。

我最初很难找到为什么XML没有工作,然后我能够缩小到如果我把无格式的XML工作的程度。

为什么Soap UI格式的XML会破坏解析?

  1. 我只想看看实际上是什么,所以我开始一步一步地引入缩进。这是最终有效的格式 - xml

  2. 然后下一行格式下一行缩进。这是破碎的 - breakingformatxml

1 个答案:

答案 0 :(得分:0)

找出原因。

答案是nokogiri xpath nokogiri-1.6.5/lib/nokogiri/xml/node.rb返回一个包含节点数组的NodeSet。在创建数组时,它会尊重每个换行符并将其视为有效节点并将其设置为TextNode。所发生的事情是teamforge ruby​​ gem没有预料到或处理xml中可能的新行的这种情况,所以解析xml并转换为object会因为对象中没有像text这样的属性而破坏。

像我这样的人也遇到了类似的problem