Класс tXML (интерфейс для штатного CpXML)

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Класс tXML (интерфейс для штатного CpXML)

Сообщение gopstop2007 »

С группами уже так на манипулировался, как только не ставил, не едут лыжи (
Считывать значения с вложенными атрибутами не хочет (
Вложения
xml_cat.png
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Класс tXML (интерфейс для штатного CpXML)

Сообщение Игорь Столяров »

Прекрасный снимок - вообще всё видно и понятно ... ;)

Если хотите, что бы я посмотрел распарс - сделайте пожалуйста рабочий пример с фрагментом Ваших данных.
Что бы была видна проблема - например как идущий в комплекте пример использования класса.
Собрал - и видно как работает.
gopstop2007 писал(а): 20 Октябрь 2023, 9:50 С группами уже так на манипулировался
Метод хаотичной комбинаторики имеет вероятностный результат, недавно в теме про АТОЛ10 обсуждали. :)
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Класс tXML (интерфейс для штатного CpXML)

Сообщение gopstop2007 »

C10 ABC
Вложения
PromTo7shop_test.rar
(216.84 КБ) 43 скачивания
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Класс tXML (интерфейс для штатного CpXML)

Сообщение Игорь Столяров »

Смешанное чувство. :)
Всё работает правильно ... но в Вашем примере получается что имя тега - это имя самой группы в которой находится тег.
Т.е. в концепте класса нужно поле для значения самой группы - ну создадим его искусственно указав особое имя "#".

Добавил строку для обработки таких полей в рекурсивный метод GroupDeadLoop() - там и старый и новый вариант, если интересно.
А пример (каким он должен быть) с разбором Вашего XML прикреплён к сообщению. Посмотрите пожалуйста. ;)
Вложения
solution.zip
(236.28 КБ) 48 скачиваний
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Класс tXML (интерфейс для штатного CpXML)

Сообщение gopstop2007 »

Игорь Столяров писал(а): 20 Октябрь 2023, 13:05 Смешанное чувство. :)
Всё работает правильно ... но в Вашем примере получается что имя тега - это имя самой группы в которой находится тег.
Т.е. в концепте класса нужно поле для значения самой группы - ну создадим его искусственно указав особое имя "#".

Добавил строку для обработки таких полей в рекурсивный метод GroupDeadLoop() - там и старый и новый вариант, если интересно.
А пример (каким он должен быть) с разбором Вашего XML прикреплён к сообщению. Посмотрите пожалуйста. ;)
Спасибо большое, работает :ty: У меня тоже смешанное чувство :D
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Класс tXML (интерфейс для штатного CpXML)

Сообщение gopstop2007 »

Еще вопрос, как обрабатывать в одном тэге элементы с одинаковым именем и переменным количеством значений, как на рисунке?
Вложения
xml2.jpg
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Класс tXML (интерфейс для штатного CpXML)

Сообщение Игорь Столяров »

Посмотрите пожалуйста как в примере сделана загрузка кодов товаров (КИЗ) в строках содержания накладной.
Нужно будет сделать привязку по ID группы (насколько я вижу - в Вашем примере такое поле есть).
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Класс tXML (интерфейс для штатного CpXML)

Сообщение gopstop2007 »

Игорь Столяров писал(а): 20 Октябрь 2023, 16:04 Посмотрите пожалуйста как в примере сделана загрузка кодов товаров (КИЗ) в строках содержания накладной.
Нужно будет сделать привязку по ID группы (насколько я вижу - в Вашем примере такое поле есть).
Посмотрел Ваш пример и попробовал разные варианты, у меня к сожалению не получилось, нет тэг-а <НомСредИдентТов> как в Вашем примере для <picture> и <НомСтр> выше этого тег-а, чем в id, в данном случае пример не помог :(

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

<СведТов НомСтр="3" НаимТов="Монитор Samsung 14 дюйм" ОКЕИ_Тов="796" КолТов="2" ЦенаТов="13000" СтТовБезНДС="26000" НалСт="20%" СтТовУчНал="31200">
	...
	<НомСредИдентТов>
		<КИЗ>SU-430302-XYZ12345</КИЗ>
                <КИЗ>SU-123456-XYZ78905</КИЗ>
                 <КИЗ>SU-098765-XYZ43210</КИЗ>
	</НомСредИдентТов>
	...
</СведТов>	

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

<offer id="1976395011" available="true">
    ...	
    <picture>https://images.prom.ua/4162249821_vudilische-serfove-shark.jpg</picture>
    <picture>https://images.prom.ua/4162249819_vudilische-serfove-shark.jpg</picture>
    <picture>https://images.prom.ua/4162249822_vudilische-serfove-shark.jpg</picture>
    ...
</offer>    
    
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Класс tXML (интерфейс для штатного CpXML)

Сообщение Игорь Столяров »

Делайте пример - посмотрим. Если хотите, конечно.
Как делается пример для теста - см. мой предыдущий ответ.
За теми кто отстал - не возвращаться. (С) Кодекс
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Класс tXML (интерфейс для штатного CpXML)

Сообщение gopstop2007 »

Игорь Столяров писал(а): 28 Октябрь 2023, 18:08 Делайте пример - посмотрим. Если хотите, конечно.
Как делается пример для теста - см. мой предыдущий ответ.
В этом примере несколько вариантов поиска решения
Вложения
solution_2.zip
(235.07 КБ) 41 скачивание
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Класс tXML (интерфейс для штатного CpXML)

Сообщение Игорь Столяров »

В принципе всё тоже самое, что и в прошлый раз. А именно вот в таком XML:

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

<offer id="967238804" available="true" group_id="21174">
<url>https://internet-magazin-fishbag.prom.ua/ua/p967238804-silikon-red-river.html</url>
<price>31.9</price>
<currencyId>UAH</currencyId>
<categoryId>63870577</categoryId>
<picture>https://images.prom.ua/2445556564_silikon-red-river.jpg</picture>
<picture>https://images.prom.ua/2445555860_silikon-red-river.jpg</picture>
<picture>https://images.prom.ua/2445555406_silikon-red-river.jpg</picture>
<picture>https://images.prom.ua/1779180268_silikon-red-river.jpg</picture>
<pickup>true</pickup>
<delivery>true</delivery>
<name>Силікон Red River Bass col.wx018 size:45 mm 10 шт.</name>
<description>Силікон </description>
<param name="Цвет">Красный</param>
</offer>
конструкция "<picture>...</picture>" - это не вложенная группа, а просто повторение значения тега "picture".
Одно значение загружается просто как поле в c именем "Picture" - это понятно.
Для приёма списка значений нужно вводить отдельное правило, что поле "Picture" - что это список значений
с привязкой по Id и при распарсе формировать такой список из двух полей (id + значение). Сейчас такого нет. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить