xml - R 中未定义的命名空间 xml2

标签 xml r xpath xml-namespaces xml2

我正在学习如何使用 R 来解析 XML,并且我正在尝试使用 Hadley 的 Wickham 的 xml2 包来解析 TEI XML 文本文档,位于 here (警告:这是一个压缩文件,我要解析的特定文件在下面的代码中给出)。我试图了解命名空间在这个包中的工作原理(我无法理解我正在使用的特定文本的文档)。使用 XML 包,我可以执行以下操作:

library("XML")
crisis <- xmlParse("data/Crisis130_22.2.tei.xml")
all_divs <- getNodeSet(crisis, "//def:div",
                   namespaces=c(def = "http://www.tei-c.org/ns/1.0"))

但是,我不知道如何使用 xml2 执行此操作。我要么得到 inherits(x, "xml_document") is not TRUE 错误,要么得到 In node_find_all(x$node, x$doc, xpath = xpath, nsMap = ns) : 未定义的命名空间前缀 [1219] 错误。这是我尝试过的:

library("xml2")

crisis2 <- read_xml("data/Crisis130_22.2.tei.xml")

# check to see whether TEI URL is present
xml_ns(crisis2) 

all_divs2 <- xml_find_all(crisis2, "//div", xml_ns(crisis2)) # gives empty list

all_divs <- xml_find_all(crisis2, "/def:div", xml_ns(crisis2)) # undefined namespace error

我知道这是一个新包,但是有人知道如何在其中使用命名空间吗?

最佳答案

好吧,我自己弄清楚了,但我想我应该将其发布在这里而不是删除问题。

library("xml2")
crisis2 <- read_xml("data/Crisis130_22.2.tei.xml")
all_divs <- xml_find_all(crisis2, "//d1:div", xml_ns(crisis2))

回想起来,我想答案是显而易见的,但是,正如我所说,我想我会在这里发布解决方案,以防它将来对任何人有帮助。

关于xml - R 中未定义的命名空间 xml2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637660/

相关文章:

r - 如何安装 'Rcpp, package? I got "软件包不可用”

xml - 关于 xquery 的帮助

java - 如何以编程方式设置相对布局中 TextViews 的对齐父右属性

sql-server - 哪个插入速度更快,XML 字段还是 Varchar(max) 字段?

r - GLM 回归预测——了解哪个因素水平是成功的

r - knitr:在 do.call(grid.arrange, list_of_plots) 时禁止立即绘图

java - 我可以将变量应用于 Selenium WebDriver 上基于文本的 xPath 搜索吗?

php - XSLT/Xpath : Selecting a preceding comment

html - 使用 xpath 查找具有特定内容的跨度

xml - 是否可以在触摸 UI 对话框中包含文件?