ИнфоАптека ®

Автоматизация аптек и аптечных сетей

Инструменты пользователя

Инструменты сайта


user:vmsirenko:xmlstаrlet_парсер

XMLStarlet парсер

Для парсинга XML файлов в командной строке, пользуюсь утилитой XMLStarlet.

Примеры

Структура обрабатываемого xml файла

ext_codes.xml
    <?xml version="1.0" encoding="windows-1251" standalone="yes" ?>
    <PACKET TYPE="3" NAME="Внешние коды" ID="24.03.2017" PRED_ID="1" FROM="001">
      <EXTNODE CODETYPE="2">
        <R CODETYPE="2" MED_ID="425" EMED_NAME="АМИНОПЛАЗМАЛЬ ГЕПА Р-Р Д/ИНФ. 10% ФЛ. 500МЛ ГЕРМАНИЯ" EVENDOR_NAME="B.BRAUN MELSUNGEN" ECOUNTRY_NAME="ГЕРМАНИЯ" EXT_CODE="11726"/>
        <R CODETYPE="2" MED_ID="957" EMED_NAME="АРДУАН ЛИОФ. Д/Р-РА В/В 4МГ ФЛ. + Р-ЛЬ АМП. 2МЛ N25 ВЕНГРИЯ" EVENDOR_NAME="GEDEON RICHTER LTD" ECOUNTRY_NAME="ВЕНГРИЯ" EXT_CODE="4930"/>
        <R CODETYPE="2" MED_ID="1330" EMED_NAME="БАКТЕРИОФАГ КОЛИПРОТЕЙНЫЙ ЖИДКИЙ ФЛ. 100МЛ РОССИЯ" EVENDOR_NAME="ИММУНОПРЕПАРАТ ГУП, Г.УФА (МИКРОГЕН НПО ФГУП)" ECOUNTRY_NAME="РОССИЯ" EXT_CODE="6629"/>
      </EXTNODE>
    </PACKET>

Пример 1

Эта команда отбирает все внешние коды поставщика с типом кодировки 2

ext_codes_2.cmd
xml.exe sel -t -v "//PACKET/EXTNODE[@CODETYPE=2]/R/@EXT_CODE" EXT_CODES.XML 

Результат

11726
4930
6629

Пример 2

Эта команда отбирает все внешние коды поставщика и привязанные к нему коды товара с типом кодировки 2. Между значениями будет печататься точка с запятой. После каждой строки будет вставляться перевод каретки.

ext_codes_2.cmd
xml.exe sel -t -m "//PACKET/EXTNODE[@CODETYPE=2]/R" -v "@EXT_CODE" -o ";" -v "@MED_ID" -n EXT_CODES.xml

Результат

11726;425
4930;957
6629;1330
Только авторизованные участники могут оставлять комментарии.
user/vmsirenko/xmlstаrlet_парсер.txt · Последние изменения: 2017/07/01 08:36 — Владимир Сиренко