在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"/>