firstarey, если вас всё ещё интересует вариант на cmd, вот он:
Код:

@Echo Off
SetLocal EnableDelayedExpansion
:: Inquisitor, 2014
:: Ad majorem Applejack gloriam
:: Файл для обработки
Set XMLFile=fff.xml
:: Ключевое слово по которому ищем строки с номерами точек
Set KeyWord=Su_Nmb
:: Смещение координат в строках от номера точки
Set Shift=1
:: Файл для вывода результата обработки
Set Result=output.csv
:: Создаем (или перезаписываем) файл с результатом
Echo.>"%Result%"
:: Читаем документ поблочно
For /F "usebackq eol= tokens=* delims=" %%A In ("%XMLFile%") Do (
Set "Data=%%A"
:: Работа с содержимым блока
If "!Block!"=="true" If "!Data:~,8!"=="</Parcel" (
Set Block=false
:: Блок - обработка
Call :BlockData
Echo.
:: Блок - удаление
For /F "tokens=1 delims==" %%B In ('Set BlockData_') Do (Set %%B=)
)
:: Определение начала блока
If "!Data:~,8!"=="<Parcel " (
Set Block=true
Set i=0
:: Чтение данных из заголовка
Call :GetData "%%A" "CadastralNumber"
)
:: Запись содержимого блока
If Not "!Data:~,8!"=="<Parcel " If "!Block!"=="true" (
Set /A i+=1
Set "BlockData_!i!=!Data!"
)
)
Echo All done
Pause&Exit
:BlockData
For %%A In (n d) Do Set %%A=0
:jmp
Set /A n+=1
:: Выбираем строки, содержащие номер точки
If Defined BlockData_%n% (
If Not "!BlockData_%n%:%KeyWord%=!"=="!BlockData_%n%!" (
Set /A d=n+Shift
:: Получаем номер точки и координаты
Call :GetData "%%BlockData_!n!%%" "%KeyWord%"
Call :GetData "%%BlockData_!d!%%" "Ordinate"
:: Выводим сами данные в нужном формате
Echo !CadastralNumber!; !%KeyWord%!; !X!; !Y!; !Delta_Geopoint!
Echo !CadastralNumber!; !%KeyWord%!; !X!; !Y!; !Delta_Geopoint!>>"%Result%"
)
) Else Exit /B
GoTo :jmp
:GetData [1 - строка с данными, 2 - проверочное слово (не обязательно)]
For /F "tokens=1 delims=<>" %%? In ("%~1") Do (
Set "Data=%%?"
:: Проверка на соответствие ожидаемой структуре
If "!Data:%~2=!"=="!Data!" (Echo XML parsing error & Exit /B 1)
:: Подготавливаем строку к разбору
Set "Data=!Data:"=!"
Set "Data="!Data: =" "!""
:: Разбираем данные в цикле, читая пары ключ=значение
For %%A In (!Data!) Do (For /F "tokens=1,* delims==" %%B In ("%%~A") Do (Set "%%~B=%%~C"))
)
Exit /B
Думаю, что комментарии помогут вам разобраться в логике работы, но если что - спрашивайте.