Компьютерный форум 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=234372)

firstarey 10-05-2012 15:12 1913457

обработка текстового\xml файла
 
Необходимо обработать XML файл и выдернуть из него несколько значений:
файл объемный > 300к строк

в итоге необходим:
текстовый или любой другой файл с результатом:

{CadastralNumber} - {значение из <area></area>}

т.е.

по куску примера:

59:37:1880101:1 - 629800
59:37:2270101:1 - 12030000
59:37:3570101:1 - 2630000

пример xml :
сам файл в приложении
читать дальше »

<SubParcels>
<SubParcel Number_PP="" Full="0">
<Areas>
<Area>
<AreaCode>002</AreaCode>
<Area>629800</Area>
<Unit>055</Unit>
</Area>
</Areas>
<Object_Entry CadastralNumber="59:37:1880101:1" Type="002001001000" />
</SubParcel>
.....
<SubParcels>
<SubParcel Number_PP="" Full="0">
<Areas>
<Area>
<AreaCode>002</AreaCode>
<Area>12030000</Area>
<Unit>055</Unit>
</Area>
</Areas>
<Object_Entry CadastralNumber="59:37:2270101:1" Type="002001001000" />
</SubParcel>
.....
(много текста)
.....
<SubParcels>
<SubParcel Number_PP="" Full="0">
<Areas>
<Area>
<AreaCode>002</AreaCode>
<Area>2630000</Area>
<Unit>055</Unit>
</Area>
</Areas>
<Object_Entry CadastralNumber="59:37:3570101:1" Type="002001001000" />
</SubParcel>


знаю только cmd, но знаний оказалось недостаточно :)

вот что написал, но ищет только первый первую пару, дальше не идет
Код:

set /p in_xml=I
:find
set teg1=Area
set teg2=Object_Entry

for /f "tokens=2 delims=<>" %%i in (' findstr "%teg1%" %in_xml%.xml ') do set "teg1_res=%%i"
for /f "delims=<>" %%i in (' findstr "%teg2%" %in_xml%.xml ') do set "teg2_res=%%i"

echo %teg2_res% %teg1_res%
echo.
:goto find

не обязательно cmd, но если не трудно с комментариями

firstarey 14-05-2012 07:03 1915494

никаких вариантов ?


Время: 18:49.

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