2016-04-06 19 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也被更新。

相關問題