use*_*232 5 xml r dataframe xml-parsing
我正在使用 Duncan Temple Lang 的 XML 包的 xmlParse 和 xPathApply 读取 R 中的 UTF-8 编码的 XML 文件。我在将文件中的文本读取到各种语言的数据框中时遇到问题。我目前使用的是 Windows 操作系统,但此 R 脚本将在不同的计算机上使用,因此我需要一个适合所有人的解决方案。请参阅下面的示例 XML 文件:
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<CATALOG>\n <L1 lang="zh-TW">\xe4\xbd\xbf\xe7\x94\xa8\xe8\x80\x85\xe8\xad\x98\xe5\x88\xa5\xe7\xa2\xbc</L1>\n <L2 lang="vi-VN">ID ng\xc6\xb0\xc6\xa1\xcc\x80i du\xcc\x80ng</L2>\n</CATALOG>\nRun Code Online (Sandbox Code Playgroud)\n\n该文本值分别以 \n 中的编码格式显示<U+4F7F><U+7528><U+8005><U+8B58><U+5225><U+78BC>。ID nguo`i du`ng请注意,这只是一个示例,实际的 XML 文件包含不同语言的文本。
代码片段:
\n\nlibrary(XML)\nlibrary(plyr)\n\ngetValues <- function(x) {\n List <- list()\n\n if(inherits(x, "XMLInternalElementNode")) {\n if(length(xmlValue(x, recursive=FALSE)) != 0) {\n List[[length(List)+1]] <- c(node = xmlName(x), value = xmlValue(x, recursive=FALSE))\n }\n }\n\nreturn(List)\n}\n\nvisitNode <- function(node, xpath = "//node()") {\n if (is.null(node)) {\n return()\n }\n\n result <- xpathSApply(node, path = xpath, getValues)\n\n if(is.list(result)) {\n dt <<- rbind.fill(lapply(result,function(y){as.data.frame(do.call(rbind, y),stringsAsFactors=FALSE)}))\n }\n} \n\n\nxtree <- xmlParse("C:/Users/I308232/Desktop/test.xml")\nroot <- xmlRoot(xtree)\ndt <- data.frame(node = NA, value = NA)\nvisitNode(root)\ndt\nRun Code Online (Sandbox Code Playgroud)\n\nsessionInfo() 输出:
\n\nR version 3.1.2 (2014-10-31)\nPlatform: x86_64-w64-mingw32/x64 (64-bit)\n\nlocale:\n[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_Australia.1252 LC_MONETARY=English_United States.1252\n[4] LC_NUMERIC=C LC_TIME=English_United States.1252 \n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] RODBC_1.3-10 plyr_1.8.1 XML_3.98-1.1\n\nloaded via a namespace (and not attached):\n[1] Rcpp_0.11.3 tools_3.1.2\nRun Code Online (Sandbox Code Playgroud)\n\n任何帮助将不胜感激。谢谢。
\n小智 0
我不知道如何将 Excel 文件转换为不同的语言,但我希望这可以帮助您阅读该文件。
当 Excel 电子表格的文件名和工作表名称具有不同的扩展名(即 .csv、.xlsx、.txt 等)时,RStudio 中可能会出现如下所示的 UTF-8 编码 XML 错误。
beantraitData = read_xlsx("traits_file_dev_sep.xlsx");
names(beantraitData)
"X..xml.version.1.0.encoding.UTF.8.."
Run Code Online (Sandbox Code Playgroud)
在本例中,我收到错误,因为文件的名称是Traits_file_dev_sep.xlsx,工作表的名称(您可以在页面底部附近的选项卡中看到)是Traits_file_dev_sep.csv。
我在 Lubuntu 中将 .csv 文件转换为 .xlsx 文件后发生了这种情况。