В файле XML есть дочерние узлы, которые имеют одинаковое имя узла, но с разными значениями, как видно из примера.
Я уже пробовал то, что мог найти в Интернете, ноувы ничего не получалось.Более того, я новичок в PowerShell и видел, что он действительно мощный, но это просто сложно из-за определенного дочернего узла, как вы можете видеть в примере.
chdir('\\folder')
[xml]$XmlDocument = Get-Content "football.xml"
Первая попытка:
foreach ($s in $XmlDocument.entities.entity.ext) {
$attribs = $s.Attributes
if ($attribs = 'Alias') {
$s
}
}
Не уверен, что я здесь делаю, но я пытался перебрать файл, чтобы получить значение для дочернего узла 'Alias' в <ext>
дочернем узле.
Затем я попробовал следующее:
$XmlDocument.SelectNodes("//entities/entity/ext") | ForEach Object {
New-Object -Type PSObject -Property @{
Name = $s_.name
Alias = $s_.alias
}
}
Но это тоже не сработало.Я также попытался экспортировать все в CSV:
$XmlDocument.entities.ChildNodes |
Export-Csv "footballers.csv" -NoTypeInformation -Delimiter:";" -Encoding:UTF8
, который работает очень хорошо, но вывод для дочерних узлов <ext>
представляет собой агрегированное сообщение об ошибке.
Таким образом, ввод будеткак ниже.И, как видно, узлы <ext>
распределены неравномерно, что делает его еще более сложным.Иногда в некоторой сущности есть определенные <ext>
узлы, а иногда нет.
<entities>
<entity id="1" version="1928">
<name>Ronaldo, Cristiano</name>
<datebirth>02/05/1985</datebirth>
<country>Portugal</country>
<ext name="Alias">Ronnie</ext>
<ext name="Height">187</ext>
<ext name="Nationality">Portuguese</ext>
<ext name="Club">Juventus</ext>
<ext name="Previously">Real Madrid</ext>
<ext name="Brand">CR7</ext>
</entity>
<entity id="24" version="1928">
<name>Messi, Lionel</name>
<datebirth>06/24/1987</datebirth>
<country>Argentina</country>
<ext name="Alias">La Pulga</ext>
<ext name="Height">170</ext>
<ext name="Nationality">Argentine</ext>
<ext name="Club">FC Barcelona</ext>
</entity>
</entities>
И затем я хотел бы преобразовать все это в файл CSV со всей информацией внутри вывода.