请注意,属性通常不是命名空间限定的。在这种情况下,如果您要查找的只有一个 PortalID,则不需要弄乱命名空间,例如:
$xml = [xml]@'
<WDA.Application.Configuration xmlns="WDA.Application.Configuration">
<Portals>
<Portal PortalID="jhgjuhu6yu8678" Type="default" />
</Portals>
</WDA.Application.Configuration>
'@
$xml | Select-Xml -XPath '//@PortalID' | Foreach {$_.Node.'#text' = 'abcd'}
$xml | Format-Xml
输出:
<WDA.Application.Configuration xmlns="WDA.Application.Configuration">
<Portals>
<Portal PortalID="abcd" Type="default" />
</Portals>
</WDA.Application.Configuration>
请注意,这Format-Xml
是一个PSCX cmdlet。
如果您需要使用命名空间来过滤特定元素,那么您可以将它们放在哈希表中并Select-Xml
像这样传递:
... | Select-Xml -XPath '//dns:Portal' -Namespace @{dns='WDA.Application.Configuration'}