Страница 6 из 8

ЭДО

Добавлено: 14 Февраль 2023, 11:17
Дед Пахом
Игорь Столяров писал(а): 14 Февраль 2023, 11:13 Это тот замечательный частный случай, когда тег 'Account'
А общий случай приведён в загрузке PaymentQ.

ЭДО

Добавлено: 14 Февраль 2023, 19:56
SergioRaguzini
finsoftrz писал(а): 14 Февраль 2023, 11:15 И как с переменными именами тэгов выкручиваешься?
Во входящих документах ЕГАИС нет переменных имен тегов... Прошу поянить что имелось ввиду

ЭДО

Добавлено: 14 Февраль 2023, 20:00
Игорь Столяров
SergioRaguzini писал(а): 14 Февраль 2023, 19:56 Во входящих документах ЕГАИС нет переменных имен тегов
Мы воевали все семьдесят лет,
Мы считали, что жизнь — это бой.
Но, по новым данным разведки,
Мы воевали сами с собой.
(С) Аквариум :idied:

ЭДО

Добавлено: 14 Февраль 2023, 20:10
SergioRaguzini
finsoftrz писал(а): 14 Февраль 2023, 11:15 И как с переменными именами тэгов выкручиваешься?
Может не понял вопроса... в xFiles нет проблем с парсингом xml в т.ч. вложенных структур

ЭДО

Добавлено: 14 Февраль 2023, 20:30
finsoftrz
SergioRaguzini писал(а): 14 Февраль 2023, 19:56
finsoftrz писал(а): 14 Февраль 2023, 11:15 И как с переменными именами тэгов выкручиваешься?
Во входящих документах ЕГАИС нет переменных имен тегов... Прошу поянить что имелось ввиду
Сергей, ошибаешься. Скорее всего мало поставщиков, не сталкивался просто. У нас тоже первое время не было, но начиная, если память не изменяет, с 2 или 3 версии, началось. Вначале тоже по фиксированным тегам работали, как в доке, потом приделал возможность редактирования накладной перед загрузкой, думал, разовые случаи. Потом еще чаще пошло и пришлось переходить на xpath. Хорошо, что сразу через генерацию скриптов было сделано, загуглил примеры на vbscript и где-то в пределах полдня порешал. Связано это с тем, что программисты у отдельных поставщиков использовали таким способом версионирование. То есть у них префиксы в тегах разные, в зависимости от номера версии егаис. Например, wb:... для первой, wb3:... для третьей. Сейчас актуальная 4 версия, вот и считаем. Егаис пространство имен понимает и пропускает. В основном, большинство придерживаются стандартных тэгов. На момент перехода на xpath 3 или 4 поставщика с переменными слали, по моему, москвичи. Отказываться принимать от них бухло не вариант. Соответствие тэгов пространству имен указывается в заголовке xml, по нему парсер и определяет, что есть что. Знаю одного программиста, который изощрялся решить проблему с помощью таблицы соответствия, это костыль, мы не знаем, кому как взбредет в голову назвать тэг. Методы работы xpath похожи на методы работу со стандартными тегами, код по размеру получается примерно одинаковый (на vbscript).

ЭДО

Добавлено: 14 Февраль 2023, 20:36
finsoftrz
Михаил чуть выше написал, что xfiles не поддерживают xpath.

ЭДО

Добавлено: 14 Февраль 2023, 20:37
SergioRaguzini
finsoftrz писал(а): 14 Февраль 2023, 20:30 у них префиксы в тегах разные, в зависимости от номера версии егаис. Например, wb:... для первой, wb3:... для третьей
пока такого не встечал, но ситуация, действительно нехорошая :?

ЭДО

Добавлено: 14 Февраль 2023, 21:00
Дед Пахом
Мне немного и достаточно давно приходилось иметь дело с xFiles, насколько помню, ему на пространства имён глубоко плевать, он же разбирает построчно, видит <Account>, значит имя "Account", а не "wb:Account".

ЭДО

Добавлено: 14 Февраль 2023, 21:12
SergioRaguzini
Дед Пахом писал(а): 14 Февраль 2023, 21:00 т <Account>, значит имя "Account", а не "wb:Account".
Посмотрел образцы xml входящих ТТН поставщиков - именно так!

ЭДО

Добавлено: 14 Февраль 2023, 21:36
Игорь Столяров
В штатном классе Clarion реализована работа с пространством имён XML (NameSpace).
xPath - нет, это иное чем DOM.

ЭДО

Добавлено: 14 Февраль 2023, 23:10
finsoftrz
Дед Пахом писал(а): 14 Февраль 2023, 21:00 Мне немного и достаточно давно приходилось иметь дело с xFiles, насколько помню, ему на пространства имён глубоко плевать, он же разбирает построчно, видит <Account>, значит имя "Account", а не "wb:Account".
Нет, в xml будет тэг <wb:Account>. А может быть и <ns:Account> и это совсем другой тэг. Для примера. В заголовке прописывается, что wb это то-то, а ns это то-то. Я могу поточнее xml посмотреть и соответствующий код методов xpath для его разбора, если нужно. А то давно делалось, я на память пишу.

ЭДО

Добавлено: 14 Февраль 2023, 23:22
finsoftrz
Игорь Столяров писал(а): 14 Февраль 2023, 21:36 В штатном классе Clarion реализована работа с пространством имён XML (NameSpace).
xPath - нет, это иное чем DOM.
Может, я заблуждаюсь. Есть упрощенный sax parser, который просто работает со строкой xml. А есть DOM, который строку xml загоняет в древовидную структуру, а затем уже с ней работает. Xpath работает с DOM, методы доступа несколько отличаются по синтаксису, что позволяет обучить парсер, в каких тэгах что лежит и при разборе оперировать ими. У меня такая картинка сложилась, в теорию xml я не углублялся.

ЭДО

Добавлено: 15 Февраль 2023, 8:53
Игорь Столяров
finsoftrz писал(а): 14 Февраль 2023, 20:30 использовали таким способом версионирование
Примеров особенностей национального программирования - масса.
Надеюсь, что в аду приготовлен отдельный котёл для тех, кто в ЦБ РФ делает XML c одинаковыми именами тега и его аттрибута: :evil:

Код: Выделить всё

<biks version="14.02.2023">
<bik bik="041280103" ks="40116810100000010010" name="УФК по Астраханской области" namemini="УФК по Астраханской области" index="414056" city="Астрахань" address="ул Латышева, 6 Г" phone="" okato="12" okpo="" regnum="" srok="" dateadd="2010-06-08" datechange=""/>
<bik bik="040147000" ks="" name="РКЦ БИЙСК" namemini="РКЦ БИЙСК" index="659300" city="Бийск" address="ул. Владимира Ленина, 127" phone="" okato="1" okpo="" regnum="" srok="" dateadd="1994-01-20" datechange=""/>
<bik bik="046577906" ks="30101810100000000906" name="УРАЛЬСКИЙ ФИЛИАЛ АО "РАЙФФАЙЗЕНБАНК"" namemini="УРАЛЬСКИЙ ФИЛИАЛ АО "РАЙФФАЙЗЕНБАНК"" index="620075" city="Екатеринбург" address="ул Красноармейская, 10" 
....
</biks>

ЭДО

Добавлено: 15 Февраль 2023, 11:40
finsoftrz
Котёл ещё можно для тех, кто в названиях отдельные символы юникода впихивает.

ЭДО

Добавлено: 15 Февраль 2023, 12:22
Admin
Игорь Столяров писал(а): 15 Февраль 2023, 8:53 XML c одинаковыми именами тега и его аттрибута
W3C не запрещает