通过从XML传递属性名来获取属性值

时间:2016-08-10 14:03:54

标签: xml powershell

如何使用PowerShell从XML文件传递属性名来获取属性值。例如,以下是XML文件内容

<?xml version="1.0" encoding="utf-8"?>
<MyProject>
  <!-- My Comment Here -->
  <MyPropertyGroup>
    <PropertyID>2</PropertyID>
    <PropertyName>ItsMyName</PropertyName>
  </MyPropertyGroup>
  <MyPropertyGroup>
    <MobileNo>3</MobileNo>
    <NickName>ItsMyNickName</NickName>
  </MyPropertyGroup>
</MyProject> 

我试过如下:

[xml]$file = Get-Content 'C:\Temp\MyTest.xml'
$file.ChildNodes[1].GetElementsByTagName("PropertyName")

但它返回的结果如下:

#text
-----
ItsMyName

我希望将ItsMyName作为结果存储到变量中。

2 个答案:

答案 0 :(得分:2)

您可以像这样扩展属性

$file.ChildNodes[1].GetElementsByTagName("PropertyName")."#text"

或者为了能够接受多重结果,您可以将其管道传输到Select-Object,就像这样

$file.ChildNodes[1].GetElementsByTagName("PropertyName") | Select-Object -ExpandProperty "#text"

答案 1 :(得分:1)

您可以访问类似属性的节点:

$file.MyProject.MyPropertyGroup[0].PropertyName

<强>输出:

ItsMyName