2011-12-04 18 views
10

Pracuję z niektórymi danymi XML w R i generuję błędy dotyczące typu 'externalptr'.Błąd "externalptr" w R przy użyciu danych XML

1) Otrzymuję następujący błąd, gdy próbuję użyć funkcji xmlInternalTreeParse() (część pakietu XML).

doc = xmlInternalTreeParse(xmldatavariable) 
    'Error in as.vector(x, "character") : cannot coerce type 'externalptr' 
to vector of type 'character'' 

2) otrzymuję ten błąd przy próbie zapisu danych w formacie XML do pliku tekstowego, więc mogę na to patrzeć i zobaczyć, co może być błąd.

write(xmldatavariable,"sample.txt") 
Error in cat(list(...), file, sep, fill, labels, append) : 
     argument 1 (type 'externalptr') cannot be handled by 'cat' 

Wszelkie sugestie? Dzięki - Z

+0

Co jest nie tak z działaniem kodu, który otrzymałeś na ostatnie pytanie? Czy po prostu nie używasz go w niewłaściwy sposób? –

+0

Kod z ostatniego pytania pracował dla przykładowych danych. To nie działa w większym programie z prawdziwymi danymi. Jestem pewien, że używam go w niewłaściwy sposób, po prostu nie wiem, co robię źle. – user1080253

+3

Możesz zajrzeć do kilku przykładów pakietu XML. –

Odpowiedz

5

Pakiet XML działa poprzez utworzenie dokumentu wskaźnika dokumentu XML, który próbuje manipulować.

"Externalptr" są po prostu zewnętrznymi wskaźnikami danych w dokumencie XML.

Aby uzyskać dostęp do danych, trzeba użyć

Parsed.xml <- xmlTreeParse(xml) ## should be string with xml text 
## get value of the first node 
xmlValue(xml[[1]]) 
## get value of the third grandchild of the first node 
xmlValue(xml[[1]][[45]][[3]]) 

Musisz uzyskać dostęp do każdego węzła xml w postaci listy.

2

udało mi się napisać treść drzewa XML do pliku za pomocą polecenia z saveXML() z pakietu XML:

saveXML(xml[[1]], file="output.xml") 

nadzieję, że to pomaga.

Powiązane problemy