powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Распарсивание XML
8 сообщений из 8, страница 1 из 1
Распарсивание XML
    #39582561
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, помогите, есть туча файлов xml, более 1000 файлов! со структурой типа:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="UTF-8"?>
<Файл ИдФайл="VO_RRMSPSV_0000_9965_20171217_00c08324-f487-48d7-af43-9f8af62a0919" ВерсФорм="4.01" ТипИнф="&#x420;&#x415;&#x415;&#x421;&#x422;&#x420;&#x41C;&#x421;&#x41F;" КолДок="900">
<ИдОтпр><ФИООтв Фамилия="-" Имя="-"/></ИдОтпр>

<Документ ИдДок="9e30412d-a7f7-f3ab-d271-bee24351c012" ДатаСост="10.12.2017" ДатаВклМСП="10.09.2016" ВидСубМСП="2" КатСубМСП="1" ПризНовМСП="2">
<ИПВклМСП ИННФЛ="645116259532">
<ФИОИП Фамилия="&#x41A;&#x423;&#x412;&#x410;&#x41D;&#x426;&#x415;&#x412;&#x410;" Имя="&#x42E;&#x41B;&#x418;&#x42F;" Отчество="&#x421;&#x415;&#x420;&#x413;&#x415;&#x415;&#x412;&#x41D;&#x410;"/>
</ИПВклМСП>
<СведМН КодРегион="64"><Регион Тип="&#x41E;&#x411;&#x41B;&#x410;&#x421;&#x422;&#x42C;" Наим="&#x421;&#x410;&#x420;&#x410;&#x422;&#x41E;&#x412;&#x421;&#x41A;&#x410;&#x42F;"/>
<Город Тип="&#x413;&#x41E;&#x420;&#x41E;&#x414;" Наим="&#x421;&#x410;&#x420;&#x410;&#x422;&#x41E;&#x412;"/>
</СведМНСвОКВЭД>
<СвОКВЭДОсн КодОКВЭД="49.32" НаимОКВЭД="&#x414;&#x435;&#x44F;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x442;&#x430;&#x43A;&#x441;&#x438;" ВерсОКВЭД="2014"/>
<СвОКВЭДДоп КодОКВЭД="49.41" НаимОКВЭД="&#x414;&#x435;&#x44F;&#x442;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x44C; &#x430;&#x432;&#x442;&#x43E;&#x43C;&#x43E;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x433;&#x43E; &#x433;&#x440;&#x443;&#x437;&#x43E;&#x432;&#x43E;&#x433;&#x43E; &#x442;&#x440;&#x430;&#x43D;&#x441;&#x43F;&#x43E;&#x440;&#x442;&#x430;" ВерсОКВЭД="2014"/><СвОКВЭДДоп КодОКВЭД="49.42" НаимОКВЭД="&#x41F;&#x440;&#x435;&#x434;&#x43E;&#x441;&#x442;&#x430;&#x432;&#x43B;&#x435;&#x43D;&#x438;&#x435; &#x443;&#x441;&#x43B;&#x443;&#x433; &#x43F;&#x43E; &#x43F;&#x435;&#x440;&#x435;&#x432;&#x43E;&#x437;&#x43A;&#x430;&#x43C;" ВерсОКВЭД="2014"/></СвОКВЭД>
</Документ>



Есть структура этого безобразия по адресу https://www.nalog.ru/opendata/7707329152-rsmp/structure-08012016.xsd

Задача загрузить сие в базу данных, как можно быстрее и без тормозов, чем лучше воспользоваться?
...
Рейтинг: 0 / 0
Распарсивание XML
    #39582582
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже версию Delphi не огласил..
ну ок
воспользуйся TXMLDocument
...
Рейтинг: 0 / 0
Распарсивание XML
    #39582590
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear Penguin, сори Delphi 2010.
...
Рейтинг: 0 / 0
Распарсивание XML
    #39582594
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы хотите, чтобы кто-то за вас и структуру базы создал по заданной в xsd схеме? Не знаю таких инструментов, хотя теоретически могли бы и быть, буду рад, если кто укажет. Но боюсь, структуру вам придется писать самому. Оно и надежнее. Обращаю только ваше внимание на атрибуты minOccurs="0" maxOccurs="unbounded", они очень важны для структуры, определяют, надо ли вводить отношения "один ко многим", или достаточно "один к одному".

Если структура создана, берете любой парсер, например MSXML или OmniXML, парсите и раскладываете по полочкам в базу. Эти два удобны, потому что поддерживают XPath, код будет много проще.
...
Рейтинг: 0 / 0
Распарсивание XML
    #39582614
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyanskyВы хотите, чтобы кто-то за вас и структуру базы создал по заданной в xsd схеме? Не знаю таких инструментов, хотя теоретически могли бы и быть, буду рад, если кто укажет. Но боюсь, структуру вам придется писать самому. Оно и надежнее. Обращаю только ваше внимание на атрибуты minOccurs="0" maxOccurs="unbounded", они очень важны для структуры, определяют, надо ли вводить отношения "один ко многим", или достаточно "один к одному".

Если структура создана, берете любой парсер, например MSXML или OmniXML, парсите и раскладываете по полочкам в базу. Эти два удобны, потому что поддерживают XPath, код будет много проще.

Да нет структуру мне не нужно, ИМХО, а вот за инстументы поддерживающие Xpath спасибо!

Кстати, а где Вы увидели атрибуты minOccurs="0" maxOccurs="unbounded", что-то не видел?

Приведите выдержку.
...
Рейтинг: 0 / 0
Распарсивание XML
    #39582630
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В xsd, на который вы дали ссылку. Например

<xs:element name="СвПрод" minOccurs="0" maxOccurs="unbounded">

означает, что элемент СвПрод в родительском элементе (у меня глаз не хватает посмотреть, кто там родитель) может встречаться неограниченное число раз, и может вообще ни разу. Для нас важно, что более одного раза. Это означает, что структура базы данных должна поддержать соотношение родитель-СвПрод "один ко многим". Что дает как минимум дополнительную таблицу.
...
Рейтинг: 0 / 0
Распарсивание XML
    #39582641
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это также означает, что при парсинге этого узла вы должны будете пользоваться функцией SelectNodes, а не SelectSingleMode. Причем в конкретных, взятых вами для примера XML-файлах, вхождение может быть и единичным, но на это ориентироваться нельзя, только на схему. Если, конечно, вы хотите правильно и без потерь провести импорт.
...
Рейтинг: 0 / 0
Распарсивание XML
    #39582643
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SelectSingleNode, сорри.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Распарсивание XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]