【问题标题】:Powershell SelectSingleNode not working with a namespace?Powershell SelectSingleNode 不适用于命名空间?
【发布时间】: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


【解决方案1】:

更改 XmlElement 节点的值:

$curNode.'#text' = 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2014-01-24
    • 1970-01-01
    相关资源
    最近更新 更多