0

以下是我的 XML 值。

<Components>
    <Component>
        <FullName>CoreEnvironment</FullName>
        <ShortName>CoreEnv</ShortName>
    </Component>
    <Component>
        <FullName>Excel Addin 2007</FullName>
        <ShortName>Excel_07</ShortName>
    </Component>
</Components>

如果用户传递组件的全名,则应显示相应的短名称。我可以使用 powershell 读取 xml 中的特定节点。但在这种情况下,如果找到一个 FullName 节点,则应显示相应的短名称节点。我无法弄清楚这其中的逻辑。

4

2 回答 2

0

类似于 Kayasax 的答案,但使用 XPath

[xml] $xml = "<Components>
    <Component>
        <FullName>CoreEnvironment</FullName>
        <ShortName>CoreEnv</ShortName>
    </Component>
    <Component>
        <FullName>Excel Addin 2007</FullName>
        <ShortName>Excel_07</ShortName>
    </Component>
</Components>"

$param = "Excel Addin 2007"

$xml.SelectNodes('//Component') | Where-Object {$_.FullName -eq "$param" } | Select-Object -ExpandProperty ShortName
于 2013-07-18T14:22:16.607 回答
0
[xml]$xml="<Components>
    <Component>
        <FullName>CoreEnvironment</FullName>
        <ShortName>CoreEnv</ShortName>
    </Component>
    <Component>
        <FullName>Excel Addin 2007</FullName>
        <ShortName>Excel_07</ShortName>
    </Component>
</Components>"

$test="Excel Addin 2007"

$xml.Components.Component |% { if( $_.fullname -match $test) { write-host  $_.ShortName}}
于 2013-07-18T13:20:53.003 回答