我正在尝试使用SSOAP包访问网络服务器。我很难搞清楚如何处理成功.SOAP()
电话的结果。
以下是user's guide:
的示例 s1 <- SOAPServer("services.soaplite.com", "interop.cgi")
test <- .SOAP(s1,
"echoString", "From R",
action="urn:soapinterop",
xmlns=c(namesp1="http://soapinterop.org/"),
handlers =NULL)
这似乎有效,返回List of 2,其中标题信息位于第一个列表中,内容位于第二个列表中:
> str(test)
List of 2
$ header : Named chr [1:8] "Wed, 25 Jun 2014 15:53:31 GMT" "Apache" "SOAP::Lite/Perl/0.55" "534" ...
..- attr(*, "names")= chr [1:8] "Date" "Server" "SOAPServer" "Content-Length" ...
$ content: chr "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SOAP-ENV:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP"| __truncated__
- attr(*, "class")= chr "SOAPHTTPReply"
我需要对content
做一些有用的事情,即把它变成某种R对象。如果我正确地遵循了用户手册,我应该可以使用convertFromSOAP()
。注意 - 手册引用了fromSOAP()
功能,该功能似乎不再存在,但仔细阅读显示covertFromSOAP()
的包内容。然而,这失败了:
> convertFromSOAP(test)
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘convertFromSOAP’ for signature ‘"SOAPHTTPReply"’
正如我尝试过的那个功能的所有其他化身一样。
有人想过如何从.SOAP()
命令中获取可用的R对象吗?或者您可以建议SSOAP
包的替代品吗?
谢谢! -Chase
答案 0 :(得分:1)
该示例关闭所有处理程序,因此您可以自己解析XML字符串:
xpathApply(xmlParseDoc(test$content),'//return',xmlValue)
SSOAP文档很难。