выбрать несколько узлов из нескольких файлов xml в PowerShell? - PullRequest
0 голосов
/ 11 июля 2020

Я новичок в Poweshell и у меня около 100 xml файлов с одинаковой структурой, и я хочу перечислить два узла из всех в один список.

Мне удалось создать один xml файл, но затем я указываю конкретный c путь к файлу xml, поэтому мне нужно каким-то образом пройти al oop через все xml файлы в папке («C: \ Users \ mittm \ Documents \ ps).

$Path = "C:\Users\mittm\Documents\ps\myxml.xml"

$xml = New-Object -TypeName XML
$xml.Load($Path)

$Xml.catalog.book | Select-Object -Property title, author

Дает результат

title   author
-----   ------
Title 1 Author 1

Но мне нужен результат

title   author
-----   ------
Title 1 Author 1
Title 2 Author 2
Title 3 Author 3

xml -файл 1

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Author 1</author>
      <title>Title 1</title>
      <price>44.95</price>   
   </book>
</catalog>

xml -file 2

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Author 2</author>
      <title>Title 2</title>
      <price>44.95</price>   
   </book>
</catalog>

И так далее с примерно 100 xml -файлами. Мой настоящий xml имеет больше тегов, чем мои примеры в книге, но я все еще хочу выберите два, но сократите его для экономии места.

1 Ответ

0 голосов
/ 11 июля 2020

Все, что вам не хватает, - это Get-ChildItem для запроса всех файлов (используйте переключатель -Recurse, если вам нужно go в подпапки)

Оттуда, назначив foreach переменной, вы должен закончиться список, содержащий все результаты из всех xmls.

$AllXmls = Get-ChildItem -Path 'Path\to the xmls files' -Filter '*.xml' -File #-Recurse

$Output = foreach ($Path in $AllXmls.FullName) {
    $xml = New-Object -TypeName XML
    $xml.Load($Path)
    $Xml.catalog.book | Select-Object -Property title, author
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...