我正在使用Sawon和Nokogiri来解析SOAP响应。
这是我的代码:
response = client.call(:is_resource_available, message: message)
isResourceAvailableXML = response.body[:is_resource_available_response][:out]
@logger.debug "response=" + isResourceAvailableXML.inspect
isResourceAvailableParsed = Nokogiri::XML(isResourceAvailableXML)
isResourceAvailable = isResourceAvailableParsed.xpath("//resource")
@logger.debug "isResourceAvailable=" + isResourceAvailable.inspect
bIsResourceAvailable = isResourceAvailable["isavailable"]
这是日志:
response="<resource id="1188200267800225" isavailable="1" />"
isResourceAvailable=[#<Nokogiri::XML::Element:0x3fd16d979fb8 name="resource" attributes=[#<Nokogiri::XML::Attr:0x3fd16d979db0 name="id" value="1188200267800225">, #<Nokogiri::XML::Attr:0x3fd16d979d9c name="isavailable" value="1">]>]
我收到此错误:TypeError (no implicit conversion of String into Integer)
问题是我没有得到一个数组,而只有一个节点,所以
而不是isResourceAvailable = isResourceAvailableParsed.xpath("//resource")
我应该使用
isResourceAvailable = isResourceAvailableParsed.at_xpath("//resource")