从R中的xmlTree中删除“xmlns”前缀

时间:2015-05-28 08:37:18

标签: xml r

我需要在特定模式(“someLocalFile.xsd”)之后将R输出直接转换为XML。使用'XML'包,是否可以从命名空间中删除“xmlns”前缀,以便我可以拥有以下内容:

期望输出

<?xml version='1.0'?>
<Assessment xmlns:xsi="http://website.com" xsi:schemaLocation="someLocalFile.xsd">
<stock>10</stock>
<stock>20</stock>
<stock>30</stock>
</Assessment>

当前输出

...
<Assessment xmlns:xsi="http://website.com" xmlns:xsi:schemaLocation="someLocalFile.xsd">
...

我的代码:

library(XML)
#
z = xmlTree("Assessment", namespaces = list(xsi = "http://website.com",
                                        xsi:schemaLocation = "someLocalFile.xsd"),
        doc = newXMLDoc())
#
z$addNode("stock", value = 10)
z$addNode("stock", value = 20)
z$addNode("stock", value = 30)
z$closeTag()
#
cat(saveXML(z))

1 个答案:

答案 0 :(得分:0)

xsi:schemaLocation应该是属性,而不是命名空间定义。 所以

z = xmlTree("Assessment", 
             namespaces = c(xsi = "http://website.com"),
             attrs = c('xsi:schemaLocation' = "someLocalFile.xsd"),
             doc = newXMLDoc())

会做你想要的。 (您可以忽略有关缺少的命名空间定义的警告。)