PowerShell脚本返回节点数为0



我正在尝试使用PowerShell来计算XML文件中操作节点的数量。

[xml]$doc =  [xml]@'
<?xml version="1.0" encoding="utf-8"?>
<DeploymentReport xmlns="http://schemas.microsoft.com/sqlserver/dac/DeployReport/2012/02"><Alerts />
<Operations>
<Operation Name="Alter">
<Item  />
<Item  />
<Item  />
</Operation>
</Operations>
</DeploymentReport>
'@
$info = $doc.SelectNodes("/DeploymentReport/Operations/Operation")
$info.count

但是,$info.count总是返回0。我做错了什么?

没有选择具有正确名称空间的节点。你需要这样做:

[Xml] $Doc =  [Xml]@'
<?xml version="1.0" encoding="utf-8"?>
<DeploymentReport xmlns="http://schemas.microsoft.com/sqlserver/dac/DeployReport/2012/02">
<Alerts/>
<Operations>
<Operation Name="Alter">
<Item/>
<Item/>
<Item/>
</Operation>
</Operations>
</DeploymentReport>
'@
$NSM = New-Object System.Xml.XmlNamespaceManager $Doc.NameTable
$NSM.AddNamespace("dr", "http://schemas.microsoft.com/sqlserver/dac/DeployReport/2012/02")
$Info = $Doc.SelectNodes("/dr:DeploymentReport/dr:Operations/dr:Operation", $NSM)
$Info.Count
1

最新更新