2014-06-09 13 views
11

Podczas próby parsowania pliku xml pojawia się zawsze ten błąd.nie można znaleźć dziedziczonej metody dla funkcji 'saveXML' dla podpisu "" znaków "'

Prosty skrypt, aby go odtworzyć:

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"’ 

Następujące pakiety są ładowane:

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

Otrzymuję ten błąd, gdy próbuję użyć saveXML() – userJT

+0

Miałem ten problem też. Myślę, że to dlatego, że 'xmlValue' jest funkcją rekursywną, a gdy nie zmienisz' rekursywnego' na 'FALSE', funkcja przemierza całą drogę do końca węzła, gdzie znajduje się ciąg znaków. –

Odpowiedz

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

powinno wystarczyć ...

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

myślę, że to ma do czynienia z rozwiązywaniem przestrzeni nazw. useInternalNodes = TRUE jest wymagane, aby xpath używała getNodeSet()

1

Zrobiłem wszystko, aby uzyskać ten sam błąd. Ale zdałem sobie sprawę, że brakowało mi useInternalNodes = TRUE. Kiedy zawarłem to w

+0

to wypluj! ;-) – Robert

Powiązane problemy