【发布时间】:2018-06-19 01:57:27
【问题描述】:
我有一个任务,但在理解如何在 Linux 中更改 XML 文件中两个不同节点的值时遇到了一些麻烦,但其中的标签相同。
我有这个 XML 文件:
<logger name="my.test.module">
<level value="error"/>
<appender-ref ref="file-module"/>
</logger>
<logger name="my.test.module2">
<level value="error"/>
<appender-ref ref="file-module2"/>
</logger>
在使用sed之后,是否有可能得到这样的结果?
你好雷神。不幸的是,我使用的是基于 Windows 的 xmlstarlet,因为在目标操作系统上无法安装它。
我想按照你的建议去做
xml edit -S -O \
--update '/log4j:configuration/logger[@name="ru.crystals.transport"]/level/@value' \
--value all log4j.xml
但是什么也没发生。
文件部分如下:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<logger name="my.test.module">
<level value="error"/>
<appender-ref ref="file-module"/>
</logger>
<logger name="my.test.module2">
<level value="error"/>
<appender-ref ref="file-module2"/>
</logger>
</log4j:configuration>
【问题讨论】:
-
最好的方法不是
sed,而是xsltproc,一个Linux XSLT处理器。