web-dev-qa-db-fra.com

Erreur: le contenu XML ne semble pas être XML | R 3.1.0

J'essaie d'obtenir ce fichier XML, mais je ne peux pas. J'ai vérifié les autres solutions sur le même sujet, mais je ne comprenais pas. Je suis un novice R.

> library(XML)
> fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml"
> doc <- xmlTreeParse(fileURL,useInternal=TRUE)

Erreur: le contenu XML ne semble pas être XML: ' https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml '

Peux-tu aider s'il te plait?

47
user2481859

Supprimer le s de https

library(XML)

fileURL<-"https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml"
doc <- xmlTreeParse(sub("s", "", fileURL), useInternal = TRUE)
class(doc)
## [1] "XMLInternalDocument" "XMLAbstractDocument"
47
Rich Scriven

Vous pouvez utiliser RCurl pour récupérer le contenu, puis XML semble pouvoir le gérer.

library(XML)
library(RCurl)
fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml"
xData <- getURL(fileURL)
doc <- xmlParse(xData)
46
jdharrison

xmlTreeParse ne prend pas en charge https.

Vous pouvez charger les données avec getURL (à partir de RCurl), puis les analyser.

14
kaarefc

La réponse est à http://www.omegahat.net/RCurl/installed/RCurl/html/getURL.html . Le point clé est d'utiliser ssl.verifyPeer = FALSE avec getURL si une erreur de certificat est affichée.

library (RCurl)
library (XML)
curlVersion()$features
curlVersion()$protocol
##These should show ssl and https. I can see these on windows 8.1 at least. 
##It may differ on other OSes.

temp <- getURL("https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml", ssl.verifyPeer=FALSE)
DFX <- xmlTreeParse(temp,useInternal = TRUE)

Si la fonction ssl ou https n'est pas montrée par les fonctions libcurl, cochez en utilisant Rcurl avec HTTPs .

6
Atul Kumar