R中出错:'xpathApply'没有适用的方法

时间:2016-02-18 10:59:25

标签: xml r xpath odata xml2

我正在尝试从oData源中检索R中的数据。这个脚本有效,但在我更新了一些软件包后,脚本需要xml2软件包,这会导致错误。

library('httr') # for sending http requests
library("xml2") # for reading xml

# log start of request
log_message(paste("Requesting OData from:",url))

# get the OData resource
response <- GET(url,authenticate(usr,pwd))

# parse xml docucument
responseContent <- content(response,type="text/xml")

# determine the names of the attributes
xmlNames <- xpathApply(responseContent,
                        '//ns:entry[1]//m:properties[1]/d:*',xmlName, 
                        namespaces = c(ns = "http://www.w3.org/2005/Atom",
                                       m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata",
                                       d="http://schemas.microsoft.com/ado/2007/08/dataservices"))

确定属性的名称时,我收到以下错误。有谁知道这个错误信息的含义以及如何解决它?

  

UseMethod(“xpathApply”)中的错误:     没有适用于'xpathApply'的方法应用于类“c('xml_document','xml_node')的对象”

1 个答案:

答案 0 :(得分:5)

我认为

httr最近在xml2使用了v1.1.0。如果您对xml数据使用content(x),则会返回xml2个对象。你可以这样做,并做一些像(未经测试)

的事情
xml_find_all(x, '//ns:entry[1]//m:properties[1]/d:*', xml_ns(x))

或解析为content(x, as = "text")之类的文字,它会为您提供字符串,然后执行XML::xmlParse(),然后您就可以正常使用基于XML的工作流程