xmlstarlet更新值没有任何反应

时间:2013-02-27 09:12:14

标签: xml bash xmlstarlet

我有一个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文件。

1 个答案:

答案 0 :(得分:7)

你有两个错误:

  1. 您的XPath表达式无效。删除尾部斜杠,使其变为/preferences/options/dbUser
  2. 默认情况下,xmlstarlet不会更改输入文件,而是在stdout中输出结果。您可以通过将输出重定向到输入文件(或任何其他文件)xmlstarlet edit --update '/preferences/options/dbUser' --value 123 preferences.xml > preferences.xml来将原始文件替换为xmlstarlet输出,也可以使用全局选项--inplace将输入文件替换为输出(而不是将其打印到stdin)。命令为xmlstarlet edit --inplace --update '/preferences/options/dbUser' --value 123 preferences.xml
  3. 输入xmlstarlet edit --help了解详情