首页 > 解决方案 > xmlstarlet:按其兄弟值选择元素

问题描述

我有这个 XML 文件

<?xml version="1.0" encoding="UTF-8">
<Products>
  <Product>
    <DisplayName>DefaultBrowserSettings</DisplayName>
    <IsLoadFromLocalData>false</IsLoadFromLocalData>
    <Message>Installed</Message>
  </Product>
  <Product>
    <DisplayName>IncognitoMode</DisplayName>
    <IsLoadFromLocalData>true</IsLoadFromLocalData>
    <Message>Installed</Message>
  </Product>
</Products>

我想要做的是用=“IncognitoMode”修改IsLoadFromLocalData元素的值。DisplayName

我设法使用 xmlstarlet 做到了这一点,但找不到任何这样做的文档。有谁知道如何做到这一点?这是我第一次尝试评估 xmlstarlet。

我被困在这里:

xmlstarlet ed --inplace -u /Products/Product/ -v "false" file.xml

问候, 尼赞

标签: xmlcmdxmlstarlet

解决方案


尝试将其更改为

xmlstarlet edit  -u "//Product[DisplayName='IncognitoMode']//IsLoadFromLocalData" -v "false"  file.xml

看看它是否有效。


推荐阅读