【发布时间】:2020-06-04 02:42:39
【问题描述】:
我有这个 PowerShell 脚本,我用它来解析 XML 文件的不同方面。因此,我想检索特定 XML 节点的值并将其保存到变量中。我要选择的这个节点在 XML 文件中存在多次,所以我需要能够提及我要检索的节点的具体编号。
XML 文件:
<lvl1>
<lvl2>
<lvl3>
<lvl4>test1</lvl4>
<lvl4>test2</lvl4>
<lvl4>test3</lvl4>
</lvl3>
</lvl2>
</lvl1>
我尝试过的 Powershell 脚本:
1 什么都不返回,也没有错误
[xml] $response = get-content "FilePath\Resp.xml"
[string] $Var = $response.SelectSingleNode('lvl1/lvl2/lvl3/lvl4[2]').InnerText
2 返回错误:“无法索引到空数组。”
[xml] $response = get-content "FilePath\Resp.xml"
$Var = $response.lvl1.lvl2.lvl3.lvl4[2].'#text'
【问题讨论】:
-
第三个
<lvl4>以另一个<lvl4>而不是</lvl4>终止。我认为这不在原始文件中?修复后,$response.SelectSingleNode('lvl1/lvl2/lvl3/lvl4[2]').InnerText和$response.lvl1.lvl2.lvl3.lvl4[2](没有.'#text')在 PowerShell v5.1.18362.145 上为我工作。 -
您考虑过使用Select-Xml 吗?
-
错过了编辑超时,但我应该添加第一个 sn-p 返回
test2,第二个(修改后的)返回test3。您要检索哪个?
标签: xml powershell xpath xmldocument xmlnode