簡體   English   中英

R 中的 XML 中沒有前綴的命名空間

[英]Namespace without prefix in XML in R

R的 XML package 中,可以使用命名空間創建新的xmlTree ZA8CFDE63391BD59EB66696C:

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 - 一種初始化空名稱列表的 hacky 方法:

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

看起來 1. 和 4. 是相同的,但是,在 package XML 中它們會產生不同的結果。 第一個給出了 OP 中提到的不正確的 XML,而選項 4. 產生:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM