我正在处理R中的一些XML数据并遇到类型'externalptr'的错误。
1)当我尝试使用xmlInternalTreeParse()函数(XML包的一部分)时,我收到以下错误。
doc = xmlInternalTreeParse(xmldatavariable)
'Error in as.vector(x, "character") : cannot coerce type 'externalptr'
to vector of type 'character''
2)当我尝试将XML数据写入文本文件时出现此错误,因此我可以查看它并查看错误可能是什么。
write(xmldatavariable,"sample.txt")
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'externalptr') cannot be handled by 'cat'
有什么建议吗?谢谢 - Z
答案 0 :(得分:6)
XML包通过制作您试图操作的XML文档的指针文档来工作。
'externalptr'只是xml文档中数据的外部指针。
访问您需要使用的数据
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]])
您需要以列表的形式访问xml的每个节点。
答案 1 :(得分:2)
我设法使用saveXML()
包中的XML
命令将XML树的内容写入文件:
saveXML(xml[[1]], file="output.xml")
希望这有帮助。
答案 2 :(得分:0)
我知道这是一个旧线程,但是要详细了解外部指针,我认为了解何时使用它很重要。 thread告诉xmlParse和xmlTreeParse之间的区别,何时使用它,以及它如何工作(指针与对象)。