5

我有一个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文件没有被触及。

4

1 回答 1

8

你有两个错误:

  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以获取更多信息

于 2013-02-27T11:29:36.883 回答