2014-06-09 13 views
11

Khi cố gắng phân tích cú pháp tệp xml, tôi luôn nhận được lỗi này.không thể tìm thấy phương pháp được kế thừa cho hàm ‘saveXML’ cho chữ ký ‘” ký tự ”’

Một kịch bản đơn giản để tái tạo nó:

doc <- xmlRoot(xmlTreeParse("http://www.stat.purdue.edu/~mdw/490M/cdcatalog.xml")) 

xpathSApply(doc, "//CATALOG/CD/PRICE", xmlValue) 

Error in (function (classes, fdef, mtable) : 
unable to find an inherited method for function ‘saveXML’ for signature ‘"character"’ 

Những gói sau được nạp:

sessionInfo() 
R version 3.1.0 (2014-04-10) 
Platform: x86_64-apple-darwin13.1.0 (64-bit) 

locale: 
[1] de_DE.UTF-8/de_DE.UTF-8/de_DE.UTF-8/C/de_DE.UTF-8/de_DE.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] XML_3.98-1.1 

loaded via a namespace (and not attached): 
[1] tools_3.1.0 
+0

Tôi gặp phải lỗi này khi tôi cố gắng sử dụng saveXML() – userJT

+0

Tôi cũng gặp sự cố này. Tôi nghĩ rằng đó là vì 'xmlValue' là một hàm đệ quy, và khi bạn không chuyển' đệ quy' thành 'FALSE', hàm này đi qua tất cả các con đường đến cuối nút, trong đó có một chuỗi ký tự. –

Trả lời

0
doc <- xmlParse("http://www.stat.purdue.edu/~mdw/490M/cdcatalog.xml") 

nên làm điều đó ...

27
url <- "http://www.stat.purdue.edu/~mdw/490M/cdcatalog.xml"  
doc <- xmlRoot(xmlTreeParse(url, useInternalNodes = TRUE)) 
xpathSApply(doc, "//CATALOG/CD/PRICE", xmlValue) 

Tôi nghĩ rằng đây đã phải làm với độ phân giải của không gian tên. useInternalNodes = TRUE được yêu cầu cho xpath để sử dụng getNodeSet()

1

Tôi đã làm mọi thứ giống nhau để có cùng lỗi. Nhưng tôi nhận ra rằng tôi đã bỏ lỡ useInternalNodes = TRUE. Khi tôi bao gồm điều này trong

+0

nhổ nó ra! ;-) – Robert

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