我在我的Rails应用程序中使用teamforge,效果很好。
现在我想测试它,所以我正在使用savon_spec宝石。我正在将 Soap XML 作为固定装置提供。
我没有获得直接从 soap UI 工具获取的 XML 解析 XML 的所需行为,但是当我删除格式时,它就像一个魅力。
我不确定为什么它不起作用。在内部,teamforge和savon使用Nokogiri。
我将把两个XML都放进去:
- 没有格式的 XML 工作
- 直接从 Soap UI 获取的 XML
如果我删除所有空格并将其转换为一行,它会按预期工作。
我最初努力寻找 XML 不起作用的原因,然后我能够缩小到如果我放置无格式的 XML,它可以工作。
为什么 Soap UI 格式 XML 会中断解析?
-
我只是想看看实际损坏的内容,所以我开始一步一步地引入缩进。这是最终起作用的格式 - xml。
-
然后是下一行缩进的下一个格式。这是破碎的 - 打破格式
找出原因。
答案是 nokogiri xpath nokogiri-1.6.5/lib/nokogiri/xml/node.rb 返回一个具有节点数组的 NodeSet。这在创建数组时,它会遵循每个换行符并将其视为有效节点并将其设置为 文本节点 .所以发生的事情是 Teamforge Ruby Gem 没有预料到或处理 XML 中可能存在新行的情况,因此 XML 的解析和转换为对象中断,因为对象中没有文本这样的属性。
像我这样的人也面临类似的问题