-->

xmlstarlet更新值没有任何反应(xmlstarlet update value nothin

2019-07-20 14:45发布

我有一个XML文件

<?xml version="1.0"?>
<preferences>
    <!--General options-->
    <options>
            <dbHost>localhost</dbHost>
            <dbUser>bwserver</dbUser>
            <dbPass>bwserver</dbPass>
            <dbPort>3306</dbPort>

我怎样才能更新值DBUSER?

当我键入

xmlstarlet edit --update '/preferences/options/dbUser/'  --value 123 preferences.xml

什么都没发生。 我只看到在终端上的文件内容。 xml文件并没有被感动。

Answer 1:

你有两个缺点:

  1. 你的XPath表达式是无效的。 掉落的斜线,这样就变成/preferences/options/dbUser
  2. 默认情况下,xmlstarlet不改变输入文件,而不是将其输出结果标准输出。 您可以通过输出重定向到输入文件(或任何其他文件)替换为xmlstarlet输出的原始文件xmlstarlet edit --update '/preferences/options/dbUser' --value 123 preferences.xml > preferences.xml或者您可以使用全局选项--inplace与输出替换输入文件(而不是将它打印到标准输入)。 该命令是xmlstarlet edit --inplace --update '/preferences/options/dbUser' --value 123 preferences.xml

键入xmlstarlet edit --help更多信息



文章来源: xmlstarlet update value nothing happens