XML 和 soapenv

XML and soapenv

我正在尝试创建一个 xml .. 运行 下面的代码,创建了第一个文档.. 但是最后一行直接kill rstudio .. (R session aborted ..)

library(XML)
# CREATE XML FILE
doc = newXMLDoc()
root = newXMLNode("Envelope", doc = doc)

# WRITE XML NODES AND DATA
mvNode = newXMLNode("Header/",  parent = root)
mvNode = newXMLNode("Body",  parent = root)

print(doc)

# CREATE XML FILE
doc = newXMLDoc(namespaces = list("http://schemas.xmlsoap.org/soap/envelope/"))
root = newXMLNode("soapenv:Envelope", doc = doc)

# WRITE XML NODES AND DATA
mvNode = newXMLNode("soapenv:Header", parent = root)
mvNode = newXMLNode("soapenv:Body",  parent = root)

有人可以确认吗?有人可以解释这个问题吗?

考虑使用 fixNamespaces 参数,指定 dummy=FALSE 让子节点使用祖先命名空间,这似乎解决了这个有趣的问题(也发生在 RGui 中)。

此外,newXMLDoc 中的 namespaces 参数(复数)似乎不适用于后续的 newXMLNode。这样的论点可能与在其方法中添加的节点有关 ... 我无法开始工作。因此,在根目录或命名空间所需的最高级别定义命名空间。

# CREATE XML FILE
doc <- newXMLDoc()

root <- newXMLNode(
  "soap:Envelope", 
  doc = doc,
  namespace = c(soap="http://schemas.xmlsoap.org/soap/envelope/"),
  fixNamespaces = c(dummy=FALSE, default=TRUE)
)

# WRITE XML NODES AND DATA
mvHeader <- newXMLNode(
  "soap:Header", parent = root, fixNamespaces = c(dummy=FALSE, default=TRUE)
)

mvBody <- newXMLNode(
  "soap:Body",  parent = root, fixNamespaces = c(dummy=FALSE, default=TRUE)
)

print(doc)
# <?xml version="1.0"?>
# <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
#   <soap:Header/>
#   <soap:Body/>
# </soap:Envelope>