2014-01-06 32 views
1

有没有简单的方法来检测Rails中是否存在XML节点?检测XML节点是否存在于Rails中

要获得@result实例变量我用

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

我已经试过:

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

或只是

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

但两者的结果在以下错误:

未定义的方法`[]”的零:NilClass

我应该清楚,我没有问题,解析XML - 我只需要知道如何检测如果一个节点存在

+0

您必须添加更多的细节。 '@ result'是零或'@result ['GetProperties']'。一旦你有了XML,把它放到'Nokogiri :: XML()'中,并使用'xpath_at'来获得节点。 – Phlip

+0

您使用的是什么XML解析器/库?什么是'@result?'等 – JKillian

+0

此刻不使用任何特定的解析器 - 我应该做些什么? – tommyd456

回答

0

考虑您的其他信息 - 像这样的工作:

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

如果Hash.from_xml不会再回到nil,(只是检查文档上这一块,我本人并不认识),您可以将其简化为:

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

最后,如果你认为这是一种草率的,你可以考虑写某种方法来一次全部检查嵌套属性喜欢这里:https://stackoverflow.com/a/1820492/3124288

+0

也可以使用预先构建的XML解析器,如Nokigiri http://nokogiri.org/ –