【问题标题】:Undefined namespace xml2 in RR中未定义的命名空间xml2
【发布时间】:2015-06-04 07:31:13
【问题描述】:

我正在学习如何使用 R 来解析 XML,并且我正在尝试使用 Hadley 的 Wickham 的 xml2 包来解析位于 here 的 TEI XML 文本文档(警告:这是一个压缩文件,下面的代码中给出了我要解析的特定一个)。我试图弄清楚命名空间在这个包中是如何工作的(我无法理解我正在使用的特定文本的文档)。使用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) : Undefined namespace prefix [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

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

【问题讨论】:

    标签: xml r xpath xml-namespaces xml2


    【解决方案1】:

    好的,我自己想通了,但我想我会在这里发布而不是删除问题。

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 2013-06-03
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多