XMLstarlet 和 R

XMLstarlet and R

我一直在尝试在 R 中使用 xmstarlet 而不是 运行 我在 bash 中的 xmlstarlet 脚本,然后将其通过管道传输到 R,但我尝试过的一切都没有'工作。我什至不确定这是否可能。

我试过这个:

shell(cmd=(xmlstarlet sel -t -c "someinput"), intern=TRUE)

bash 中的命令单独运行,但是当我尝试执行此操作时,出现此错误:

Error: unexpected symbol in "shell(cmd=(xmlstarlet sel"

我不确定我是否应该使用 system() 而不是 shell。我也用过系统,但没有成功

编辑:

完整的命令示例,也可以在 和完整的 xml 文件中找到

xmlstarlet sel -t -m "/bookstore/book/Description" -i "@stock='YES'" -v '/bookstore/book/Location/shelf'

将您的命令保存为字符向量并使用 system:

cmd <- "xml el http://whosebug.com"
system(command = cmd, intern = T)

这给了我

http://whosebug.com:12.163: EntityRef: expecting ';'
/cdn.sstatic.net/Sites/Whosebug/img/apple-touch-icon@2.png?v=73d79a89bded&a
                                                                               ^
[1] "html"                          "html/head"                     "html/head/title"              
[4] "html/head/link"                "html/head/link/link"           "html/head/link/link/link"     
[7] "html/head/link/link/link/meta"
attr(,"status")
[1] 4

如果您在 xmlstarlet 命令中使用双引号,则必须使用反斜杠对它们进行转义。 使用您添加到问题中的示例:

cmd <- "xmlstarlet sel -t -m \"bookstore/book\" -i \"Description/stock='YES'\" -v \"Location/shelf\" -n /PATH/TO/books.xml"
system(command = cmd, intern=T)

输出:

[1] "30" "21" "11"