Как разобрать числовой элемент в XML с помощью powershell - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужна помощь в разборе XML в Powershell (я новичок).

Вот код с ошибкой.Второй 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 - нет.Как мне разобрать числовое значение?Я хочу, чтобы 31.50 было напечатано для второго оператора Write-Output.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Поскольку есть два дочерних узла (атрибут и текст), вы должны явно выбрать InnerText:

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

Write-Output $xml.Transaction.Amount.InnerText
0 голосов
/ 14 сентября 2018

Вы можете ссылаться на содержимое самого элемента с помощью $node.Amount.'#text' или $node.Amount.InnerText.

Если вы хотите проанализировать значение как десятичное число, выполните:

[decimal]::Parse($node.Amount.InnerText)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...