2016-04-06 22 views
0

此代码成功使得启用=“false为以下两条线。 我如何可以改变如下所以启用了只有第二行=假?xmlstarlet我怎么能指定的具体类

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"> 

回答

1

XPath允许其父内出现的次序指定的特定的XML元素:

--update '//ResultCollector[2]/@enabled' 

上面表达式选择,作为第二显示它们的父处理下的所有元素ResultCollector

更一般地,机会是你的应用将是由嵌入的信息更安全的选择元件(例如,标签值),而不是通过顺序:

--update '//ResultCollector[@guiclass="ViewResultsFullVisualizer"]/@enabled' 

如果它适合你,上面的表达式选择用于处理所有ResultCollector元件的标签guiclassViewResultsFullVisualizer。在你的例子中,这也只会导致第二个ResultCollector也被更新。

相关问题