如何使用Powershell解析xml中的数字元素

时间:2018-09-14 13:14:09

标签: xml powershell

我需要在Powershell中解析xml的帮助(我是新手)。

这是有错误的代码。第二个Write-Output不会输出预期的31.50输出。

[xml]$XmlDocument = Get-Content "input.xml"
$node = $XmlDocument.Transaction
Write-Output "$($node.TranDate)"
Write-Output "$($node.Amount)"

input.xml具有以下几行:

<Transaction id="7648">
  <TranDate>2018-09-13</TranDate>
  <Amount currency="840">31.50</Amount>
</Transaction>

我得到以下输出:

2018-09-13
System.Xml.XmlElement

如您所见,TranDate字段可以很好地打印,但是Amount元素却不能。如何解析数值?我希望为第二个Write-Output语句打印31.50。

2 个答案:

答案 0 :(得分:0)

您可以使用$node.Amount.'#text'$node.Amount.InnerText来引用元素本身的内容。

如果要将值解析为十进制数字,请执行以下操作:

[decimal]::Parse($node.Amount.InnerText)

答案 1 :(得分:0)

由于有两个子节点(属性和文本),因此必须显式选择InnerText

$xml = [xml]'<Transaction id="7648">
  <TranDate>2018-09-13</TranDate>
  <Amount currency="840">31.50</Amount>
</Transaction>'

Write-Output $xml.Transaction.Amount.InnerText