如何将 xml 节点的值提取到 powershell 中的变量?
How to extract the value of xml node to a variable in powershell?
我正在构建一个 Power shell 脚本,该脚本读取 XML 文件并从节点中提取值以进行进一步计算。如何将节点值提取到变量?
我在 PS 中使用 XMLDOC 编写代码来读取文件并提取 Power shell 中的值。我能够获取单个节点的属性值。我无法提取也具有属性的节点值,并且该节点多次出现。
Test.xml
<abc>
<body>
<Rows Count="02">
<Row>
<a ID="1">Name1</a>
<a ID="2">Naresh</a>
<a ID="3">Arvind</a>
</Row>
<Row>
<a ID="1">Name2</a>
<a ID="2">Sathish</a>
<a ID="3">Kannan</a>
</Row>
</Rows>
</body>
<abc>
Code
[xml]$XmlDocument = Get-Content E:\Desktop\Test.xml
$nodes = $XmlDocument.SelectNodes('//Rows')
$A = $nodes.GetAttribute("count")
if ($A -eq '02')
{
$B = $XmlDocument.abc.Body.Rows.ROW.a | Where-Object {$_.ID -eq '2'}
}
Expected Result
变量 A 应为“02”(仅值)并且 "Naresh"、"Sathish"(仅值)应存储在 2 个不同的变量中
Actual Result
变量 A 得到“02”——它正在工作
"Naresh" 和 "Sathish" 都存储在变量 B 中,但与 ID 和 headers.
一起存储
[xml] $str = @'
<abc>
<body>
<Rows Count="02">
<Row>
<a ID="1">Name1</a>
<a ID="2">Naresh</a>
<a ID="3">Arvind</a>
</Row>
<Row>
<a ID="1">Name2</a>
<a ID="2">Sathish</a>
<a ID="3">Kannan</a>
</Row>
</Rows>
</body>
</abc>
'@
$a = $str.abc.body.Rows.Row.a | Where-Object {$_.ID -eq '2'} | Select-Object -ExpandProperty '#text'
使用 Select-Object 属性,输出中将只有 Naresh 和 Sathish。
我正在构建一个 Power shell 脚本,该脚本读取 XML 文件并从节点中提取值以进行进一步计算。如何将节点值提取到变量?
我在 PS 中使用 XMLDOC 编写代码来读取文件并提取 Power shell 中的值。我能够获取单个节点的属性值。我无法提取也具有属性的节点值,并且该节点多次出现。
Test.xml
<abc>
<body>
<Rows Count="02">
<Row>
<a ID="1">Name1</a>
<a ID="2">Naresh</a>
<a ID="3">Arvind</a>
</Row>
<Row>
<a ID="1">Name2</a>
<a ID="2">Sathish</a>
<a ID="3">Kannan</a>
</Row>
</Rows>
</body>
<abc>
Code
[xml]$XmlDocument = Get-Content E:\Desktop\Test.xml
$nodes = $XmlDocument.SelectNodes('//Rows')
$A = $nodes.GetAttribute("count")
if ($A -eq '02')
{
$B = $XmlDocument.abc.Body.Rows.ROW.a | Where-Object {$_.ID -eq '2'}
}
Expected Result
变量 A 应为“02”(仅值)并且 "Naresh"、"Sathish"(仅值)应存储在 2 个不同的变量中
Actual Result
变量 A 得到“02”——它正在工作 "Naresh" 和 "Sathish" 都存储在变量 B 中,但与 ID 和 headers.
一起存储[xml] $str = @'
<abc>
<body>
<Rows Count="02">
<Row>
<a ID="1">Name1</a>
<a ID="2">Naresh</a>
<a ID="3">Arvind</a>
</Row>
<Row>
<a ID="1">Name2</a>
<a ID="2">Sathish</a>
<a ID="3">Kannan</a>
</Row>
</Rows>
</body>
</abc>
'@
$a = $str.abc.body.Rows.Row.a | Where-Object {$_.ID -eq '2'} | Select-Object -ExpandProperty '#text'
使用 Select-Object 属性,输出中将只有 Naresh 和 Sathish。