我的XML文件就像:
.visuallyhidden {
visibility: hidden;
}
我找到了一个xmlstarlet命令来更改元素的值,例如对于元素 alive ,它将是:
<?xml version="1.0" encoding="UTF-8"?>
<agents>
<agent id="1">
<aname>pi1</aname>
<alive>1</alive>
<scenarios>1,2,3</scenarios>
</agent>
<agent id="4">
<aname>pi4</aname>
<alive>0</alive>
<scenarios>2,5,6,25,77,88,99</scenarios>
</agent>
...many more
</agents>
结果:
xmlstarlet ed -u "/agents/agent[@id=1]/alive" -v 0 agents.xml
结果只是打印到sdtout。我正在寻找一个解决方案(比如SED -i)直接替换文件中的值而不是将stdout重定向到如下文件:
...
<agent id="1">
<aname>pi1</aname>
<alive>0</alive>
<scenarios>1,2,3</scenarios>
</agent>
...
现在我遍历整个XML文档,每次更改值时,我都会创建一个新的XML文件(需要很长时间)。但这不是一个合适的解决方案。谢谢你的任何想法!