【发布时间】:2013-10-16 01:41:09
【问题描述】:
所以按照docs我应该可以做到:
$ns = @{ns=$curNode.NamespaceURI}
$node = $curNode.SelectSingleNode('ns:tagName', $ns)
$node.value = '2'
获取当前curNode下的tagName节点。但我明白了:
Cannot find an overload for "SelectSingleNode" and the argument count: "2".
那么我该如何去我的子节点改变它的值呢?
如果我只是尝试
$node = $curNode.SelectSingleNode('tagName')
那么$node 是$null。
【问题讨论】:
-
$curNode 的类型是什么?执行
$curNode.GetType().FullName。 -
@KeithHill - System.Xml.XmlElement
-
SelectSingleNode() 是一种 .NET 方法,它期望第二个参数是 XmlNamespaceManager 的实例。您可以将当前语法与 Select-Xml 一起使用,例如
Select-Xml -Xml $curNode -XPath 'ns:tagName' -Namespace @{ns=$curNode.NamespaceUri}. -
如果你想使用 .NET 方法,那么你需要为第二个参数创建一个 XmlNamespaceManager,例如
$nsmgr = new-object xml.xmlnamespacemanager $curNode.OwnerDocument.NameTable;$nsmgr.Add('ns', $curNode.NamespaceURI).
标签: xml powershell selectsinglenode