如何在R {XML}中编辑XML文件

时间:2014-09-09 14:25:57

标签: xml r

我已经看到了一些类似的线索,但没有一个似乎完全回答了我的问题:

我有一个带有几个“Space”对象的建筑物的XML文件。我正在尝试用空格下的“名称”值替换Space的“ID”属性。举一个简单的例子:

<Space zoneIdRef="idref text"  id="id text">
    ...
    ...
    ...
     <Name>"name text"</Name>
</Space>

所以我希望最终得到Space id =“name text”而不是“id text”。

到目前为止我尝试过:

rm(list = ls())

file = "C://Users//ben.brannon//Desktop//Project1.xml"
outfile = "C://Users//ben.brannon//Desktop//Project1_new.xml"

xml = xmlTreeParse(file)
root = xmlRoot(xml)

n=4

for (i in 3:3+n-1)
{
  name = xmlSApply(root[["Campus"]][["Building"]][[i]][["Name"]],xmlValue)
  spaceattrs = xmlAttrs(root[["Campus"]][["Building"]][[i]])

}

saveXML(root, outfile)

当我检查R中“root”中的新值时,它似乎已正确更新,但是当我写入文件时,它们没有被更改。我想知道是否有更好的方法来更新值而不仅仅是“=”,或者我可能没有正确处理文本字符串?

谢谢,

1 个答案:

答案 0 :(得分:2)

简单分配就足够了。

XML:

<Root>
    <Campus>
        <Building>
            <Space zoneIdRef="idref text"  id="id text">
                <Name>"name text"</Name>
            </Space>
        </Building>
    </Campus>
</Root>

代码:

library(XML)

xml <- xmlTreeParse("XML.xml")
root = xmlRoot(xml)
name = xmlValue(root[["Campus"]][["Building"]][["Space"]][["Name"]])

xmlAttrs(root[["Campus"]][["Building"]][["Space"]])[["id"]] <- name