R 中的错误:'xpathApply' 没有适用的方法
Error in R: no applicable method for 'xpathApply'
我正在尝试从 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"))
确定属性名称时出现以下错误。有谁知道这条错误信息是什么意思,我该如何解决?
Error in UseMethod("xpathApply") :
no applicable method for 'xpathApply' applied to an object of class "c('xml_document', 'xml_node')"
我认为 httr
最近在 v1.1.0
中切换到使用 xml2
。如果您对 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
的工作流程
我正在尝试从 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"))
确定属性名称时出现以下错误。有谁知道这条错误信息是什么意思,我该如何解决?
Error in UseMethod("xpathApply") : no applicable method for 'xpathApply' applied to an object of class "c('xml_document', 'xml_node')"
httr
最近在 v1.1.0
中切换到使用 xml2
。如果您对 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
的工作流程