【问题标题】:Get property value by passing property name from XML通过从 XML 传递属性名称获取属性值
【发布时间】:2016-08-10 14:03:53
【问题描述】:

如何通过使用 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")

但它返回结果如下:

#文本
-----
它我的名字

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

【问题讨论】:

    标签: xml powershell


    【解决方案1】:

    你可以像这样展开属性

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

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

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

    【讨论】:

      【解决方案2】:

      你可以像属性一样访问节点:

      $file.MyProject.MyPropertyGroup[0].PropertyName
      

      输出:

      ItsMyName
      

      【讨论】:

      • 我想通过属性名作为参数来获取它的值
      • $file.MyProject.MyPropertyGroup[0].$param
      • 我想将结果通过管道传递给其他变量,例如 $file.ChildNodes[1].GetElementsByTagName("Mail-Merge-Service-Name") |外串
      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 2017-03-01
      • 1970-01-01
      相关资源
      最近更新 更多