Powershell - 无论类型

时间:2016-10-06 15:34:10

标签: xml powershell

说我有这个xml:

  $xml = [xml]@'
    <messages>
      <message name="Advertisement" msgtype="7" msgcat="app">
        <field name="AdvId" required="Y" />
        <field name="AdvTransType" required="Y" />
        <field name="AdvRefID" required="N" />
        <component name="Instrument" required="Y" />
        <component name="Balls" required="Y" />
        <field name="AdvSide" required="Y" />
        <field name="Quantity" required="Y" />
      </message>
    </messages>
'@

我期待下面的结果,但没有返回任何内容:

$xml.messages.message[1] # should return <field name="AdvTransType" required="Y" />
$xml.messages.message[3] # should return <component name="Instrument" required="Y" />

我缺少一个功能吗?我想通过索引访问节点......

powershell版本:6.0.0 alpha

2 个答案:

答案 0 :(得分:1)

在名为node notation的XML树中,返回指定节点的数组,因此message[1]表示第二message,但您只有一个message

要按索引访问子节点而不考虑类型,请使用特殊属性ChildNodes

$xml.messages.message.ChildNodes[1] 
name         required
----         --------
AdvTransType Y       

答案 1 :(得分:0)

试一试:

 $xml.messages.message.field[1]
 $xml.messages.message.field[2]