xmlstarlet 如何指定特定的 class
xmlstarlet how can I specify s specific class
此代码成功地使下面两行的 enabled="false"。
如何仅在第二行更改以下 so 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">
XPath 允许指定一个特定的 xml 元素按在其父元素中出现的顺序:
--update '//ResultCollector[2]/@enabled'
上面的表达式选择所有 ResultCollector
个在其父项下显示为第二个的元素进行处理。
更一般地说,您的应用程序通过嵌入信息(例如标签值)而不是顺序选择元素可能会更安全:
--update '//ResultCollector[@guiclass="ViewResultsFullVisualizer"]/@enabled'
如果适合您,上述表达式选择处理标签 guiclass
为 ViewResultsFullVisualizer
的所有 ResultCollector
个元素。在您的示例中,这也会导致仅更新第二个 ResultCollector
。
此代码成功地使下面两行的 enabled="false"。 如何仅在第二行更改以下 so 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">
XPath 允许指定一个特定的 xml 元素按在其父元素中出现的顺序:
--update '//ResultCollector[2]/@enabled'
上面的表达式选择所有 ResultCollector
个在其父项下显示为第二个的元素进行处理。
更一般地说,您的应用程序通过嵌入信息(例如标签值)而不是顺序选择元素可能会更安全:
--update '//ResultCollector[@guiclass="ViewResultsFullVisualizer"]/@enabled'
如果适合您,上述表达式选择处理标签 guiclass
为 ViewResultsFullVisualizer
的所有 ResultCollector
个元素。在您的示例中,这也会导致仅更新第二个 ResultCollector
。