我需要在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。
答案 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