此代码成功使以下两行的enabled =“false。 如何仅为第二行更改以下内容以使enabled = false?
xmlstarlet ed --inplace --update '//ResultCollector/@enabled' --value 'false' "${scriptLocation}"
<ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
答案 0 :(得分:1)
XPath允许按其父级内容的出现顺序指定特定的xml元素:
--update '//ResultCollector[2]/@enabled'
上面的表达式选择在其父级下面显示为第二个的所有ResultCollector
元素进行处理。
更一般地说,您的应用程序可能会通过嵌入信息(例如标记值)而不是按顺序更安全地选择元素:
--update '//ResultCollector[@guiclass="ViewResultsFullVisualizer"]/@enabled'
如果它适合您,则上述表达式选择处理标记为ResultCollector
为guiclass
的所有ViewResultsFullVisualizer
元素。在您的示例中,这也只会导致第二个ResultCollector
更新。