首页 > 解决方案 > Powershell按字符串值选择节点

问题描述

我正在尝试通过另一个节点的字符串值来选择一个节点。

我的 XML 部分:

          <XIP xmlns="http://prty/XIP/v6.0">
             <Generation>
               <Properties>
                 <Property>
                   <PUID>prp/10008</PUID>
                   <PropertyName>Number Of Audio Streams</PropertyName>
                   <Value>1</Value>
                 </Property>
                <Property>
                  <PUID>prp/12</PUID>
                  <PropertyName>Sampling Frequency</PropertyName>
                  <Value>48000</Value>
                </Property>
                <Property>
                  <PUID>prp/10002</PUID>
                  <PropertyName>Duration</PropertyName>
                  <Value>2M9.686S</Value>
                </Property>
             <Properties>
          <Generation>
        </XIP>

所以,想法是通过字符串 Duration 获得 2M9.686S

$xmlDocument.XIP.Generation.Properties.Property.Value |  Where-Object $xmlDocument.XIP.Generation.Properties.Property -Property PropertyName -Like ("Duration")

我正在尝试不同的方式,但不返回任何值。我究竟做错了什么?

谢谢你的帮助。

标签: xmlpowershell

解决方案


您可以像这样导航:

$xmlDocument.XIP.Generation.Properties.Property | where {$_.PropertyName -eq "Duration"}

访问特定的属性和以下访问值,即:

($xmlDocument.XIP.Generation.Properties.Property |
    where {$_.PropertyName -eq "Duration"}).value

(为了复制场景,我使用$xmlDocument = [xml](Get-Content .\test.xml)来保存和访问 XML 内容)


推荐阅读