使用PowerShell向XML节点添加属性会添加名称空间

时间:2018-02-02 12:18:05

标签: xml powershell

我尝试使用PowerShell为一些新创建的XML节点添加一些属性,但出于某种原因,属性如下所示:

<add d5p1:name="" d5p2:value="" xmlns:d5p2="noindex,nofollow" xmlns:d5p1="X-Robots-Tag" />

为什么要使用命名空间格式化这样的属性?我的代码非常简单:

if ($node -ne $null) {
    $node.SetAttributeNode("name", "X-Robots-Tag")
    $node.SetAttributeNode("value", "noindex,nofollow")
}

1 个答案:

答案 0 :(得分:1)

如有疑问,请阅读documentationSetAttributeNode()方法添加没有值的命名空间属性。

public virtual XmlAttribute SetAttributeNode(
    string localName,
    string namespaceURI
)
     

参数

     

的localName
  类型:System.String
  属性的本地名称。

     

的namespaceURI
  类型:System.String
  属性的名称空间URI。

     

[...]

     

<强>说明
  XmlAttribute没有任何孩子。使用Value为属性指定文本值,或使用AppendChild(或类似方法)将子项添加到属性中。

您正在寻找SetAttribute()方法。

if ($node -ne $null) {
    $node.SetAttribute("name", "X-Robots-Tag")
    $node.SetAttribute("value", "noindex,nofollow")
}