检测Rails中是否存在XML节点

时间:2014-01-06 20:00:15

标签: ruby-on-rails xml

是否有一种简单的方法可以检测Rails中是否存在XML节点?

要获取@result实例变量,我使用

response, data = Net::HTTP.post_form(url, params)
@result = Hash.from_xml(response.body)

我试过了:

if @result['GetProperties']['Errors'].exists?

或只是

if @result['GetProperties']['Errors']

但两者都会导致以下错误:

未定义的方法`[]'为nil:NilClass

我应该说清楚解析XML没问题 - 我只需要知道如何检测节点是否存在

1 个答案:

答案 0 :(得分:0)

鉴于您的其他信息 - 这样的事情会起作用:

if @result && @result['GetProperties'] && @result['GetProperties']['Errors']

如果Hash.from_xml没有返回nil,(只是检查一下这个文档,我个人不知道)你可以将其简化为:

if @result['GetProperties'] && @result['GetProperties']['Errors']

最后,如果您认为这有点草率,您可以考虑编写某种方法来同时检查嵌套属性,如下所示:https://stackoverflow.com/a/1820492/3124288