2014-05-10 15 views
35

Tôi đang cố gắng lấy tệp XML này, nhưng không thể. Tôi đã kiểm tra các giải pháp khác trong cùng một chủ đề, nhưng tôi không thể hiểu được. Tôi là một newbie R.Lỗi: Nội dung XML dường như không phải là XML | R 3.1.0

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

Lỗi: Nội dung XML dường như không có XML: 'https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml'

Bạn có thể xin vui lòng giúp đỡ?

+0

Dán liên kết vào thanh địa chỉ chrome và nhận được thông báo "Tệp XML này dường như không có bất kỳ thông tin kiểu nào được liên kết với nó." Sau đó nó hiển thị cây tài liệu. – Marichyasana

Trả lời

32

Bạn có thể sử dụng RCurl để lấy nội dung và sau đó XML dường như để có thể xử lý nó

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

Cảm ơn @jdharrison vì đã trả lời. Tôi nhận được thông báo lỗi sau khi tôi gõ dòng thứ tư: XData <- getURL (fileURL). ** Lỗi trong chức năng (loại, msg, asError = TRUE): vấn đề chứng chỉ SSL, xác minh rằng chứng chỉ CA là OK. Chi tiết: lỗi: 14090086: Quy trình SSL: SSL3_GET_SERVER_CERTIFICATE: xác minh chứng chỉ không thành công ** Điều đó có nghĩa là gì? –

+4

@ArpanGanguli Sử dụng 'xData <- getURL (fileURL, ssl.verifypeer = FALSE)'. Lỗi được giải thích sâu tại http://www.omegahat.org/RCurl/FAQ.html – jdharrison

+0

nên là omegahat.net ?? – Sean

13

xmlTreeParse không hỗ trợ https.

Bạn có thể tải dữ liệu với getURL (từ RCurl) và sau đó phân tích cú pháp.

42

Tháo s từ https

library(XML) 

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

Tôi không phải lúc nào cũng hoạt động. – jvb

4

trả lời là tại http://www.omegahat.net/RCurl/installed/RCurl/html/getURL.html. Điểm mấu chốt là sử dụng ssl.verifyPeer = FALSE với getURL nếu lỗi chứng chỉ được hiển thị.

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) 

Nếu khả năng ssl hoặc https không được hiển thị bằng chức năng libcurl, hãy kiểm tra using Rcurl with HTTPs.

+0

Tôi nghĩ rằng bây giờ nên là omegahat.net – Sean

+1

Cập nhật URL cơ sở liên kết từ omegahat.org sang omegahat.net –

Các vấn đề liên quan