访问XML节点

时间:2014-08-19 15:41:12

标签: xml powershell

我正从webservice收集一些XML,我收到格式为:

<devices>
  <device>
    <hostname>name</hostname>
    <SerialNumber>38xkf8</SerialNumber>
    <Uptime units="seconds">603835</Uptime>
  </device>
  <device>
    <hostname>name</hostname>
    <SerialNumber>495dkf</SerialNumber>
    <Uptime units="seconds">92548</Uptime>
  </device>
</devices>

我可以解析信息,但是当我尝试访问秒时,我似乎无法获得我想要的数据。当我尝试访问Uptime元素时:

$xml.Devices.Device.Uptime

units                      #text
-----                      -----
seconds                    603835
seconds                    92548

我无法获得返回的#text值。

编辑:

解决方案:

Select-Xml -Xml $xml -XPath "//Device" | %
{
  $_.Node.Uptime.InnerText
}

2 个答案:

答案 0 :(得分:1)

格式良好的XML需要在引号之前等于符号

<Uptime units="seconds">603835</Uptime>

答案 1 :(得分:1)

您也可以使用Select-Xml来执行此操作:

Select-Xml -Xml $xml -XPath "//Uptime" | ForEach{$_.Node.InnerText}

或者更简单(可能不适用于旧版本的PowerShell,我不确定):

(Select-Xml -Xml $xml -XPath "//Uptime").Node.InnerText