Bash 用于更新部分 XML 元素值的脚本
Bash script for updating part of XML element value
我需要一个 bash 脚本来根据其他动态 属性 更新部分 XML 元素值。
例如,XML 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Configure class="org.eclipse.something">
<Set name="foo">foo-val</Set>
<Set name="bar">bar-val</Set>
<Set name="my-elm">/dont/matter/THIS_ONE_NEED_TO_BE_UPDATED</Set>
</Configure>
尝试将 xmlstarlet 与正则表达式结合使用,但未提供我想要的结果。
我正在研究 OSX 10.12.
使用 xmlstarlet
和下面的 xpath
表达式对我来说效果很好。下面的表达式对 XML
文件
进行同步替换(-L
标志)
xmlstarlet edit -L -u "/Configure/Set[@name='my-elm']" -v '/dont/matter/THIS_ONE_NEED_TO_BE_UPDATED' xml-file
删除 -L
标志以检查替换是否正确发生,一旦成功添加相同的标志。
xmlstarlet (1.6.1)
OS X
检查过
尽管 NOT
严格建议使用 sed
进行 xml
更新,但以下逻辑对您有用,
sed "s/\(<Set name=\"my-elm\".*>\)[^<>]*\(<\/Set.*\)/\/dont\/matter\/THIS_ONE_NEED_TO_BE_UPDATED/" xml-file
添加 -i.bak
用于文件的就地替换。
我需要一个 bash 脚本来根据其他动态 属性 更新部分 XML 元素值。
例如,XML 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Configure class="org.eclipse.something">
<Set name="foo">foo-val</Set>
<Set name="bar">bar-val</Set>
<Set name="my-elm">/dont/matter/THIS_ONE_NEED_TO_BE_UPDATED</Set>
</Configure>
尝试将 xmlstarlet 与正则表达式结合使用,但未提供我想要的结果。 我正在研究 OSX 10.12.
使用 xmlstarlet
和下面的 xpath
表达式对我来说效果很好。下面的表达式对 XML
文件
-L
标志)
xmlstarlet edit -L -u "/Configure/Set[@name='my-elm']" -v '/dont/matter/THIS_ONE_NEED_TO_BE_UPDATED' xml-file
删除 -L
标志以检查替换是否正确发生,一旦成功添加相同的标志。
xmlstarlet (1.6.1)
OS X
尽管 NOT
严格建议使用 sed
进行 xml
更新,但以下逻辑对您有用,
sed "s/\(<Set name=\"my-elm\".*>\)[^<>]*\(<\/Set.*\)/\/dont\/matter\/THIS_ONE_NEED_TO_BE_UPDATED/" xml-file
添加 -i.bak
用于文件的就地替换。