R中XML中没有前缀的命名空间



在R中的XML包中,可以创建一个带有名称空间的新xmlTree对象,例如使用:

library(XML)
d = xmlTree("foo", namespaces = list(prefix = "url"))
d$doc()
# <?xml version="1.0"?>
# <foo xmlns:prefix="url"/>

如何创建一个没有前缀bar的默认命名空间,使其看起来如下?

# <?xml version="1.0"?>
# <foo xmlns="url"/>

以下内容并没有达到我的预期。

library(XML)
d = xmlTree("foo", namespaces = list("url"))
d$doc()
# <?xml version="1.0"?>
# <url:foo xmlns:url="<dummy>"/>

R中的无名称列表和空名称列表之间似乎有区别。

1-一个匿名列表:

list("url")
# [[1]]
# [1] "url"
names(list("url"))
# NULL

2-命名列表:

list(prefix = "url")
# $prefix
# [1] "url"
names(list(prefix = "url"))
# [1] "prefix"

3-错误初始化的空名称列表:

list("" = "url")
# Error: attempt to use zero-length variable name

4-一种初始化空名单的破解方法:

setNames(list(prefix = "url"), "")
# [[1]]
# [1] "url"
names(setNames(list(prefix = "url"), ""))
# [1] ""

看起来是1。和4。是相同的,但是在包XML中它们产生不同的结果。第一个选项给出了OP中提到的不正确的XML,而选项4。生产:

library(XML)
d = d = xmlTree("foo", namespaces = setNames(list(prefix = "url"), ""))
d$doc() 
# <?xml version="1.0"?>
# <foo xmlns="url"/>

相关内容

  • 没有找到相关文章

最新更新