Страница 3 из 7
Добавлено: Вт мар 01, 2022 21:22
Destiny
little-brother писал(а):Проблема, когда отображается не содержимое узла, а список прямых потомков, как таблица (режим TABLE). Сейчас связи между потомком и представляющей его строкой - нет. Вот думаю как увязать, чтобы не слишком путано было.
Блин, меня терзают смутные сомнения, что в этом режиме вообще ничего не надо было бы генерить...
Можно пример такого файла? Реального файла, не пары псевдострок в тегах КОД под этот форум)))
Чтобы понимать - о каких таких частных случаях таблицы идет речь...
Я вот не могу представить вида XML, у которого не будет возможности делать так просто, как я написал вот выше...
я вполне допускаю, что написанный код будет работать более чем шустро и адекватно! но есть шанс, что он все же не нужен будет, а правильный код - это еще и не перегруженный код!
Добавлено: Вт мар 01, 2022 21:38
little-brother
Эмм, режим TABLE как раз основной. Большого смысла смотреть на перечень атрибутов и дочерних узлов - нет. В виде текста, если значения не очень длинные, они отлично читаются и так.
Табличный вид нужен для того, чтобы XML вида
Код: Выделить всё
<root>
<x>AAA</x>
<x>BBB</x>
<x>BBB</x>
</root>
Отобразить как таблицу из трех строк AAA, BBB и CCC, а не x, x и x, что достаточно бессмыслено.
правильный код - это еще и не перегруженный код
Я в такой не умею

Да нормально там всё получилось - просто добавил отдельный массив под ссылки на узлы, который связан с таблицей, а не деревом.
P.S. Show same глючит
Поправил -
https://disk.yandex.ru/d/nxZAdmtzFqlIlw
В архиве тестовый XML. Я тестируюсь на /mxmldoc/function6
Предыдущий пост менял - может не заметили.
Добавлено: Ср мар 02, 2022 14:03
Destiny
ну вроде всё вполне корректно и на своих местах, как я могу увидеть.
единственно что - упомянутые в XML ссылки на доп.файлы отсутствуют.
и это в какой-то мере плохо - для валидации файла, для его парсинг отдельными специализированными программами, в которых можно было бы проверить верность XPath, свертки узлов/визуального представления и т.п. вещи...
У вас есть ПОЛНЫЙ комплект этих файлов dtd, xls, xsd? Откуда, условно говоря, этот одинокий 3.xml нашелся/взялся?
Добавлено: Ср мар 02, 2022 15:00
little-brother
Откуда? Ок, Гугл, найди мне пример XML-файла... Спасибо
Насчет дополнительных файлов: используемая библиотека их не понимает, т.к. это простейший парсер, который будет парсить даже невалидный XML.
Для полной работы с XML требуются библиотеки libexpat или libxml2, которые и собрать под Windows еще надо постараться. Можно конечно Windows-парсер подключить, но мне чего то лень разбираться и плагин на С++ придется переводить, т.к. там работа через OLE-интерфейсы.
Да и делать полноценный инструмент для просмотра XML у меня нет в планах, т.к. XML я вижу только при разработке этого плагина

Добавлено: Ср мар 02, 2022 15:09
Destiny
little-brother писал(а):Насчет дополнительных файлов: используемая библиотека их не понимает, т.к. это простейший парсер, который будет парсить даже невалидный XML.
Для полной работы с XML требуются библиотеки libexpat или libxml2, которые и собрать под Windows еще надо постараться. Можно конечно Windows-парсер подключить, но мне чего то лень разбираться и плагин на С++ придется переводить, т.к. там работа через OLE-интерфейсы.
Да и делать полноценный инструмент для просмотра XML у меня нет в планах, т.к. XML я вижу только при разработке этого плагина
не-не-не!!! не идет речь о текущем плагине/библиотеке!
нет! тут все ок и самодостаточно!
нет. речь просто идет о возможностях, предлагаемых большими shareware продуктами. вот им нужны все файлы для полноценной работы с этим конкретным xml.
А весь парадокс в том, что гугл НЕ выдает этого файла))) вот что за запрос вы давали, что получили в виде ответа этот файл)??
Там где-то рядом должны и все остальные файлы лежать. Вот найти бы это место..
Добавлено: Ср мар 02, 2022 19:50
little-brother
Учитывая, что там ссылка на xls, то видимо это был какой то экспорт документации к mxml. Имя наталкивает на мысль, что возможно я все таки дернул этот файл из какого то дистрибутива, когда выбирал библиотеку для парсинга. Но я недавно чистил папку загрузок, так что следов не найти уже.
Добавлено: Чт мар 03, 2022 20:53
Destiny
Ок, проехали с этим файлами. Как-нить сам разберусь, для красоты по сути те файлы нужны в сторонних прогах...
А релиз выкатывается? или еще есть повод для улучшения?
Добавлено: Чт мар 03, 2022 22:06
little-brother
Планируется еще дополнительная обработка ссылок в значениях ячеек (это общее для всех плагинов).
Добавлено: Пт мар 04, 2022 14:29
Destiny
Насчет Show same - не ясно когда она срабатывает
Код: Выделить всё
<LIST_OF_PERSONS>
<DATA>
<NAME>...</NAME>
<ID>...</ID>
<PASSPORT>
<SERIJA lang="qwe">...</SERIJA>
<NOMER>...</NOMER>
</PASSPORT>
</DATA>
<DATA>
<NAME>...</NAME>
<ID>...</ID>
<PASSPORT>
<SERIJA>...</SERIJA>
<NOMER>...</NOMER>
</PASSPORT>
</DATA>
<DATA>
<NAME>...</NAME>
<ID>...</ID>
<PASSPORT>
<SERIJA>...</SERIJA>
<NOMER>...</NOMER>
</PASSPORT>
</DATA>
</LIST_OF_PERSONS>
вот на таком грубом примере на каком узле и как ожидаемо должна сработать эта команда?
Я вот ожидал, что на любом, просто будут отброшены все остальные узлы. К примеру, если выбрать узел SERIJA, то выйдет так:
Код: Выделить всё
<LIST_OF_PERSONS>
<DATA>
<PASSPORT>
<SERIJA lang="qwe">...</SERIJA>
</PASSPORT>
</DATA>
<DATA>
<PASSPORT>
<SERIJA>...</SERIJA>
</PASSPORT>
</DATA>
<DATA>
<PASSPORT>
<SERIJA>...</SERIJA>
</PASSPORT>
</DATA>
</LIST_OF_PERSONS>
Или даже так:
Код: Выделить всё
<LIST_OF_PERSONS>
<SERIJA lang="qwe">...</SERIJA>
<SERIJA>...</SERIJA>
<SERIJA>...</SERIJA>
</LIST_OF_PERSONS>
А сейчас ничего и никак не происходит(((
P.S. понятно, что я показываю чистый xml, а плагин работает с деревом узлов и таблицей значений.
НО, я думаю понятно, что просто так мне проще показать то - что может отразить сам плагин в своих возможностях:
ЧТО-ТО уйдет в дерево, а ЧТО-ТО покажется как таблица значений.
Добавлено: Сб мар 05, 2022 21:23
little-brother
вот на таком грубом примере на каком узле и как ожидаемо должна сработать эта команда?

Похоже надо что-то делать, раз не очевидно, что данная команда делает.
Для вашего XML данная команда бесполезна, т.к. у узла LIST_OF_PERSONS все прямые потомки одинаковы. В рассматриваемом выше файле 3.xml для узла function потомки могут быть: description, return value и argument. Команда Show same нужна для того, чтобы просмотреть все узлы типа argument (прямые потомки function!) таблицей. Т.е. в некоторых XML данные вроде как могут быть отображены таблицей, но мешает один-два не совсем обычных элемента. В этом случае и может помочь команда Show same.
Если надо что-то другое, то вы опишите - подумаю и может быть даже реализую, если не сильно сложно будет. Отбора по XPath пока не будет

Добавлено: Вс мар 06, 2022 12:17
Destiny
little-brother писал(а):В рассматриваемом выше файле 3.xml для узла function потомки могут быть: description, return value и argument. Команда Show same нужна для того, чтобы просмотреть все узлы типа argument (прямые потомки function!) таблицей.
если честно - все равно не понятно. В том-то и дело, что данная команда понимается и принимает для использования именно что в духе "фильтр по XPath". Причем в этом случае сущность табличного представления каких-то отфильтрованных данных лишь увеличивает свою пользу и её понимание - ибо происходит отсекание ненужного, а оставшееся весьма вероятно превращается в табличное представление.
А сейчас... Я открыл этот файл, выбрал (точнее я ОООЧЕНЬ помучался, пока искал узел, содержащий) return value, выбрал эту команду ... и... и справа в таблице появилась одна строка. И что это означает? Не понял. А вот если бы исчезли ВСЕ лишние узлы - то тогда бы понял. Ибо может быть на весь файл этот узел есть лишь в одном варианте, ибо я же замучился его выискивать! А как это понять? Только лишь, если бы из дерева исчезли все остальные узлы!
Далее выбрал argument и .. и плагин задумался секунд на 5/7 .. и рухнул, а за ним и тотал рухнул нафиг. падает в любой разрядности. но в 32-й чаще! Т.е. 64 может иногда и не упасть при фильтрации.
Добавлено: Вс мар 06, 2022 13:19
little-brother
return value, выбрал эту команду ... и... и справа в таблице появилась одна строка.
Так и задумано: отображаются только прямые потомки, имеющие тот же тег, что и текущий. Обратите внимание, что после выполнения команды фокус переходит на родительский узел. Поскольку return value у function один, то он один и показывается. Мне кажется вы чего другого ожидаете и данная функция никак не бьется с вашими ожиданиями.
Изменю название на "Show the same siblings" (показать похожие на этом же уровне). Длинновато, но вроде однозначное описание.
Дерево всегда неизменно. Его фильтровать не получится, т.к. данные хранятся прямо в нем. Можно конечно перестраивать, но на больших XML это будет медленно.
точнее я ОООЧЕНЬ помучался, пока искал узел, содержащий
Наверно стоит добавить поиск по дереву
Можно поподробнее, что именно надо сделать, чтобы плагин упал? Я повторить не могу. 4-ый узел function содержит return value.
Добавлено: Вс мар 06, 2022 14:05
Destiny
little-brother писал(а):Можно поподробнее, что именно надо сделать, чтобы плагин упал?
да вроде все просто. открываем файл 3.xml. Открываем узел function6. Выделяем description. Вызываем конт.меню и выбираем пункт Show same. И вуаля....
little-brother писал(а):отображаются только прямые потомки, имеющие тот же тег, что и текущий. Обратите внимание, что после выполнения команды фокус переходит на родительский узел.
А этот переход лишь ухудшает понимание и использование дерева. Ведь после того, как узел выделен, то никаким образом его не перевести в режим отображения его элементов.
Т.е. из

никак не получить

Только если выделить другой узел и потом опять вернуться к этому! Это нефига не удобно и не прозрачно! Любое выделение узла подразумевает, что будет отображено ТО - что под этим узлом прячется. На то это и дерево XML! А тут выделение есть, а отображение совсем другого рода показывается.
Плюс зачем в табличном представлении колонка #CONTENT ? Она же просто показывает склеенное значение предыдущих столбцов. Ну а нафига оно???
Добавлено: Вс мар 06, 2022 14:29
little-brother
Открываем узел function6. Выделяем description.
Повторилось. Отлично, будет с чего начать копать - я на одиночных узлах не проверял, т.к. для них смысла нет. Как оказалось зря
Ведь после того, как узел выделен, то никаким образом его не перевести в режим отображения его элементов.
Добавлю чтобы повторный клик по выделенному узлу вызывал перевод в обычный режим (точнее просто вызывал обновление таблицы).
А можно просто по соотв. строке кликнуть в таблице.
зачем в табличном представлении колонка #CONTENT ?
Это чтобы можно было искать по всему содержимому, а не только в том, что в прямых потомках.
Добавлено: Вс мар 06, 2022 17:46
Destiny
little-brother писал(а):Это чтобы можно было искать по всему содержимому, а не только в том, что в прямых потомках.
Ну, реализовывать это наверное нужно, конечно же. Но вот визуализировать в столбце как бы !!!ДАННЫХ!!!! - очень не рекомендуется.
Совершенно сбивает с толку и понимания - так ЧТО же такое это ТАКОЕ мне для глаз отрисовывается - типа в двойном варианте...
Двойной Удар по глазам? ЖКВД?)))))