PDA

Показать полную графическую версию : обработка текстового\xml файла


firstarey
10-05-2012, 15:12
Необходимо обработать 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
никаких вариантов ?




© OSzone.net 2001-2012