2016-04-06 8 views
0

を指定することができます。このコードが正常に以下の両方のラインのための偽」=有効。 は、どのように私は2行目のみのための偽=有効次を変更できますか?xmlstarletは、どのように私は特定のクラスにS

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要素を指定する:上記式は処理のために親の下にある第2表示されるすべてResultCollector要素を選択

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

より一般的には、チャンスはあなたのアプリケーションは、(このようなタグ値など)埋め込まれた情報ではなく、順番によって、より安全な選択要素になります。それはあなたに合っている場合

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

、上記の式は、すべての処理のために選択し、タグguiclassViewResultsFullVisualizerResultCollectorの要素。あなたの例では、これによっても、第2のResultCollectorだけが更新されます。

関連する問題