Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Поиск текста в xml и запись в файл. (http://forum.oszone.net/showthread.php?t=298441)

voleja 15-04-2015 22:15 2496368

Поиск текста в xml и запись в файл.
 
Добрый вечер, подскажите пожалуйста, может быть уже есть готовое решение, задача следующая.
Есть каталог на "B:\20150415\" в котором содержится 20+ файлов *.xml и др. файлов (имена файлов уникальные).
Содержимое каждого xml-файла следующее:
Скрытый текст
HTML код:

<?xml version="1.0"?>
-<Package>
-<HEADER>
<Package_id>1</Package_id>
<From>Older</From>
</HEADER>
-<OBJECTS>
-<OBJECT name="Fix">
-<PROPERTIES>
<PROPERTY name="ID">1</PROPERTY>
<PROPERTY name="FIO">Andrew</PROPERTY>
</PROPERTIES>
</OBJECT>
</OBJECTS>
</Package>


Необходимо обойти все файлы *.xml каталога "B:\20150415\" и получить значения из каждого файла <PROPERTY name="ID"> и <PROPERTY name="FIO">, записав его на следующую строку созданного файла (csv или xls).
Где первое значение из примера:
1;Andrew
105;Andy
итд

Foreigner 15-04-2015 22:56 2496379

voleja,
Код:

get-childitem 'B:\20150415' *.xml | foreach {

    [xml] $xml = get-content $_.fullname

    $id = ($xml.package.objects.object.properties.property | ? { $_.name -eq 'id' }).'#text'
    $fio = ($xml.package.objects.object.properties.property | ? { $_.name -eq 'fio' }).'#text'

    add-content 1.csv "$id;$fio" 
}


Kazun 15-04-2015 23:02 2496383

Код:

Select-Xml -path *.xml  "//PROPERTIES"  | Foreach {$_.Node.Property."#text" -join ","} | Out-File resilt.csv

Georgio 15-04-2015 23:25 2496391

Для полноты коллекции:
Код:

gci 'B:\20150415\*.xml'|%{([xml](gc $_.fullname)).SelectNodes('//PROPERTY').InnerText -join ';'}|Out-File 'example.csv'
.

voleja 16-04-2015 06:09 2496427

спасибо, но
Цитата:

Цитата Kazun
HTML код:

Select-Xml -path *.xml "//PROPERTIES" | Foreach {$_.Node.Property."#text" -join ","} | Out-File resilt.csv
»

и
Цитата:

Цитата Georgio
HTML код:

gci 'B:\20150415\*.xml'|%{([xml](gc $_.fullname)).SelectNodes('//PROPERTY').InnerText -join ';'}|Out-File 'example.csv'
»

не решают задачи, т. к выгружают не по формату, а выгружают все - весь текст, можно их привести к поиску и записи в файл только значений в секциях <PROPERTY name="ID"> и <PROPERTY name="FIO"> и записать в csv в виде
1;Andrew
105;Andy
найденные значения <PROPERTY name="ID"> и <PROPERTY name="FIO"> из каждого файла в одной строке с разделителем, следующие значения, найденные в другом файле - переход на др. строку?

Georgio 16-04-2015 11:29 2496506

Цитата:

Цитата voleja
не решают задачи, т. к выгружают не по формату, а выгружают все - весь текст, можно их привести к поиску и записи в файл только значений в секциях <PROPERTY name="ID"> и <PROPERTY name="FIO"> и записать в csv в виде
1;Andrew
105;Andy »


Обновите PowerShell до версии 4.0. Другие версии я не поддерживаю:).


Время: 18:48.

Время: 18:48.
© OSzone.net 2001-