我正在尝试获取以下屏幕快照中分支之一的值-该值<ParamValue>
带有蓝色箭头。
问题是同名的brance太多了,我认为我要过滤它们的唯一方法是在名字上(不想做将来可能会改变的CommandID)-所以,PackageName="intel_teaming_script.ps1"
。
我怎样才能做到这一点?我尝试了以下内容,但未显示任何内容:
[xml]$xml = Get-content C:\temp\build.xml
$node = $xml.SelectSingleNode("//Phases/Phase/Package[@PackageName='intel_teaming_script']")
$node.PackageName
我也尝试过此方法,但仍然没有得到它:
$findxml = $xml.Phases.Phase.Package | Where-Object {$_.PackageName -eq 'intel_teaming_script.ps1'}
$findxml.PackageName
即使执行上述操作,我仍然需要挖掘并获取值-这是一个IP地址。
下面的XML屏幕截图:
更新:基于@ har07的答案,以下是我得到的答案:
$node = $xml.SelectSingleNode("//Phases/Phase/Package[@PackageName='intel_teaming_script.ps1']//ParamValue")
ParamValue
#text
-----
1.1.1.1
如果我尝试将其转换为字符串,然后使用ExpandProperty,我仍然会列出ParamValue。
$node = $xml.SelectSingleNode("//Phases/Phase/Package[@PackageName='intel_teaming_script.ps1']//ParamValue")
$node.ToString()
$node | select -ExpandProperty "#text"
结果:
ParamValue
1.1.1.1
您可以通过xpath中的位置索引获取元素,例如:
//Phases/Phase/Package[@PackageName='intel_teaming_script.ps1']//Param[2]/ParamValue
在xpath之上返回找到的第二个 <ParamValue>
。请注意,xpath位置索引从1而不是0开始。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句