r - 使用 xml2 更改 XML 文件中的值
问题描述
我有一个看起来像这样的 .xml 文件
<document>
<attribute1>false</attribute1>
<subjects>
<subject>
<population>Adult</population>
<name>adult1</name>
</subject>
</subjects>
</document>
我想将值更改<name>
为“adult5”。
我正在使用 xml2 包。我使用XMLFile <- read_xml(path_xml)
了 xml 文件,并且xml_children(xml_children(xml_children(XMLFile)[2])[[1]])[2]
我可以在控制台上访问节点和 R 提示“adult1”。
但是如果我尝试xml_replace(xml_children(xml_children(xml_children(XMLFile)[2])[[1]])[2], "<name>adult5</name>")
它会导致这个<<name>adult#005</name>/>
。
可能是我在这里错过的一个非常愚蠢的错误......
提前致谢!
解决方案
您可以简单地选择您想要的节点,然后使用xml_text(node) <- "new text"
覆盖该节点。您不需要放入标签等 - 这是使用 xml 包的全部要点。您的案例的一个工作示例可能是:
文件:my_xml.xml
<?xml version="1.0" encoding="UTF-8"?>
<document>
<attribute1>false</attribute1>
<subjects>
<subject>
<population>Adult</population>
<name>adult1</name>
</subject>
</subjects>
</document>
现在在 R 中:
library(xml2)
XMLFile <- read_xml("my_xml.xml")
# Identify the node you want to change:
my_node <- xml_find_first(XMLFile, xpath = "//name")
xml_text(my_node)
#> [1] "adult1"
# Write to the node
xml_text(my_node) <- "adult5"
# Test the change has been made
xml_text(my_node)
#> [1] "adult5"
# Save the file
write_xml(XMLFile, "my_xml2.xml")
现在,当我们查看 时my_xml2.xml
,我们的更改已保存:
文件:my_xml2.xml
<?xml version="1.0" encoding="UTF-8"?>
<document>
<attribute1>false</attribute1>
<subjects>
<subject>
<population>Adult</population>
<name>adult5</name>
</subject>
</subjects>
</document>
推荐阅读
- kubernetes - Kubernetes 作业失败,没有日志,没有终止原因,没有事件
- r - 为什么运行此命令时会出现“级别”?
- bash - bash + cmd :将一个命令输出传递给第二个命令
- javascript - 父组件在父状态更改时不必要地重新渲染子组件
- java - 有没有办法从 MainClass 更改创建用户的值?
- javascript - 如何显示带有样式的javascript字符串
- h2o - 在 Windows 中的水流中构建模型,在 AIX 服务器上使用?非程序员的帮助
- swift - 无法将类型“(JournalListViewController)->()-> JournalListViewController”的值分配给类型“JournalListViewController?”
- python - 如何修复'AttributeError:'dict'对象没有属性'code'
- python - Python Turtle,更改可见部分