在PowerShell中获取XML节点字符串的属性

时间:2016-03-11 00:34:28

标签: xml powershell

我有一个PowerShell对象,其中包含一个包含XML String但不包含整个XML Document的属性 - 只是该节点。列出这个

$field.schemaxml;
<Field Type="Lookup" DisplayName="My Lookup" Required="FALSE" EnforceUniqueValues="FALSE" List="{447f56b0-0e38-461c-a0d2
-aa58e30ff270}" WebId="d31c0006-5576-4d1f-a0bb-ba3ce4ff787b" ShowField="Title" UnlimitedLengthInDocumentLibrary="FALSE"
Group="_My Columns" ID="{dc1ee48c-7bf8-487d-b63f-bfda9aedec4c}" SourceID="{d31c0006-5576-4d1f-a0bb-ba3ce4ff787b}" Static
Name="My_x0020_Lookup" Name="My_x0020_Lookup" Version="1" />

使用Powershell将其解析为XML Node对象的正确方法是什么,使用xpath或类似方法选择“List”属性值(或任何属性)并更改它。

1 个答案:

答案 0 :(得分:0)

假设您的示例中的属性是“StaticName”而没有空格,以下内容对我有效。

<强>的PowerShell

$node = '<Field Type="Lookup" DisplayName="My Lookup" Required="FALSE" EnforceUniqueValues="FALSE" List="{447f56b0-0e38-461c-a0d2
-aa58e30ff270}" WebId="d31c0006-5576-4d1f-a0bb-ba3ce4ff787b" ShowField="Title" UnlimitedLengthInDocumentLibrary="FALSE"
Group="_My Columns" ID="{dc1ee48c-7bf8-487d-b63f-bfda9aedec4c}" SourceID="{d31c0006-5576-4d1f-a0bb-ba3ce4ff787b}" StaticName="My_x0020_Lookup" Name="My_x0020_Lookup" Version="1" />'

$xml = [xml]$node

Write-Output "Field is:"
Write-Output $xml.Field

Write-Output "Changing DisplayName...$([Environment]::Newline)"
$xml.Field.DisplayName = "New DisplayName"

Write-Output "Field is now:"
Write-Output $xml.Field

提供以下输出:

Field is:


Type                             : Lookup
DisplayName                      : My Lookup
Required                         : FALSE
EnforceUniqueValues              : FALSE
List                             : {447f56b0-0e38-461c-a0d2 -aa58e30ff270}
WebId                            : d31c0006-5576-4d1f-a0bb-ba3ce4ff787b
ShowField                        : Title
UnlimitedLengthInDocumentLibrary : FALSE
Group                            : _My Columns
ID                               : {dc1ee48c-7bf8-487d-b63f-bfda9aedec4c}
SourceID                         : {d31c0006-5576-4d1f-a0bb-ba3ce4ff787b}
StaticName                       : My_x0020_Lookup
Name                             : My_x0020_Lookup
Version                          : 1

Changing DisplayName...

Field is now:
Type                             : Lookup
DisplayName                      : New DisplayName
Required                         : FALSE
EnforceUniqueValues              : FALSE
List                             : {447f56b0-0e38-461c-a0d2 -aa58e30ff270}
WebId                            : d31c0006-5576-4d1f-a0bb-ba3ce4ff787b
ShowField                        : Title
UnlimitedLengthInDocumentLibrary : FALSE
Group                            : _My Columns
ID                               : {dc1ee48c-7bf8-487d-b63f-bfda9aedec4c}
SourceID                         : {d31c0006-5576-4d1f-a0bb-ba3ce4ff787b}
StaticName                       : My_x0020_Lookup
Name                             : My_x0020_Lookup
Version                          : 1