我已经看到了一些类似的线索,但没有一个似乎完全回答了我的问题:
我有一个带有几个“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”中的新值时,它似乎已正确更新,但是当我写入文件时,它们没有被更改。我想知道是否有更好的方法来更新值而不仅仅是“=”,或者我可能没有正确处理文本字符串?
谢谢,
答案 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