我需要查找并替换特定 xml 元素的值。条件如下:
- 元素的值enabled必须从0 to 1;
-
enabled必须是一个孩子somenode element
我的测试 xml 如下所示:
<somenode name="node1">
<some></some>
<enabled>0</enabled>
<some></some>
</somenode>
<someothernode name="node2">
<some></some>
<enabled>0</enabled>
<some></some>
</someothernode>
<somenode name="node3">
<some></some>
<enabled>0</enabled>
<some></some>
</somenode>
我预计第一和第三enabled元素将被改变。到目前为止,我已经成功编写了这个 sed 命令:
sed -n "1h;1!H;${;g;s|\(<somenode [^>]*>\)\(.*\)\(<enabled>\s*\)0\(\s*</enabled>\)\(.*</somenode>\)|\1\2\3 1 \4\5|g;p;}" test.xml
但它只改变了最后一个,我相信这是由于贪婪匹配。
任何帮助,将不胜感激。
尝试使用正则表达式来解析 XML 通常不是一个好主意。请参阅之前的讨论,例如在 Java 中使用 REGEX 解析 XML https://stackoverflow.com/questions/335250/parsing-xml-with-regex-in-java。 (实际上,您的 XML 格式不正确,因为它没有一个根元素)。几乎每种语言都有许多不同的(免费)XML 引擎用于解析和操作 XML,我建议您使用其中一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)