[wlx] xmltab - просмотр XML файлов

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Проблема, когда отображается не содержимое узла, а список прямых потомков, как таблица (режим TABLE). Сейчас связи между потомком и представляющей его строкой - нет. Вот думаю как увязать, чтобы не слишком путано было.
Блин, меня терзают смутные сомнения, что в этом режиме вообще ничего не надо было бы генерить...
Можно пример такого файла? Реального файла, не пары псевдострок в тегах КОД под этот форум)))
Чтобы понимать - о каких таких частных случаях таблицы идет речь...
Я вот не могу представить вида XML, у которого не будет возможности делать так просто, как я написал вот выше...

я вполне допускаю, что написанный код будет работать более чем шустро и адекватно! но есть шанс, что он все же не нужен будет, а правильный код - это еще и не перегруженный код!
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Эмм, режим TABLE как раз основной. Большого смысла смотреть на перечень атрибутов и дочерних узлов - нет. В виде текста, если значения не очень длинные, они отлично читаются и так.

Табличный вид нужен для того, чтобы XML вида

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

<root>
   <x>AAA</x>
   <x>BBB</x>
   <x>BBB</x>
</root>
Отобразить как таблицу из трех строк AAA, BBB и CCC, а не x, x и x, что достаточно бессмыслено.
правильный код - это еще и не перегруженный код
Я в такой не умею :D Да нормально там всё получилось - просто добавил отдельный массив под ссылки на узлы, который связан с таблицей, а не деревом.

P.S. Show same глючит :D

Поправил - https://disk.yandex.ru/d/nxZAdmtzFqlIlw
В архиве тестовый XML. Я тестируюсь на /mxmldoc/function6

Предыдущий пост менял - может не заметили.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Поправил - https://disk.yandex.ru/d/nxZAdmtzFqlIlw
В архиве тестовый XML. Я тестируюсь на /mxmldoc/function6
ну вроде всё вполне корректно и на своих местах, как я могу увидеть.
единственно что - упомянутые в XML ссылки на доп.файлы отсутствуют.
и это в какой-то мере плохо - для валидации файла, для его парсинг отдельными специализированными программами, в которых можно было бы проверить верность XPath, свертки узлов/визуального представления и т.п. вещи...
У вас есть ПОЛНЫЙ комплект этих файлов dtd, xls, xsd? Откуда, условно говоря, этот одинокий 3.xml нашелся/взялся?
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Откуда? Ок, Гугл, найди мне пример XML-файла... Спасибо :D

Насчет дополнительных файлов: используемая библиотека их не понимает, т.к. это простейший парсер, который будет парсить даже невалидный XML.

Для полной работы с XML требуются библиотеки libexpat или libxml2, которые и собрать под Windows еще надо постараться. Можно конечно Windows-парсер подключить, но мне чего то лень разбираться и плагин на С++ придется переводить, т.к. там работа через OLE-интерфейсы.

Да и делать полноценный инструмент для просмотра XML у меня нет в планах, т.к. XML я вижу только при разработке этого плагина :)
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Насчет дополнительных файлов: используемая библиотека их не понимает, т.к. это простейший парсер, который будет парсить даже невалидный XML.

Для полной работы с XML требуются библиотеки libexpat или libxml2, которые и собрать под Windows еще надо постараться. Можно конечно Windows-парсер подключить, но мне чего то лень разбираться и плагин на С++ придется переводить, т.к. там работа через OLE-интерфейсы.

Да и делать полноценный инструмент для просмотра XML у меня нет в планах, т.к. XML я вижу только при разработке этого плагина
не-не-не!!! не идет речь о текущем плагине/библиотеке!
нет! тут все ок и самодостаточно!
нет. речь просто идет о возможностях, предлагаемых большими shareware продуктами. вот им нужны все файлы для полноценной работы с этим конкретным xml.
А весь парадокс в том, что гугл НЕ выдает этого файла))) вот что за запрос вы давали, что получили в виде ответа этот файл)??
Там где-то рядом должны и все остальные файлы лежать. Вот найти бы это место..
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Учитывая, что там ссылка на xls, то видимо это был какой то экспорт документации к mxml. Имя наталкивает на мысль, что возможно я все таки дернул этот файл из какого то дистрибутива, когда выбирал библиотеку для парсинга. Но я недавно чистил папку загрузок, так что следов не найти уже.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

Ок, проехали с этим файлами. Как-нить сам разберусь, для красоты по сути те файлы нужны в сторонних прогах...

А релиз выкатывается? или еще есть повод для улучшения?
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Планируется еще дополнительная обработка ссылок в значениях ячеек (это общее для всех плагинов).
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение 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, а плагин работает с деревом узлов и таблицей значений.
НО, я думаю понятно, что просто так мне проще показать то - что может отразить сам плагин в своих возможностях:
ЧТО-ТО уйдет в дерево, а ЧТО-ТО покажется как таблица значений.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

вот на таком грубом примере на каком узле и как ожидаемо должна сработать эта команда?
:( Похоже надо что-то делать, раз не очевидно, что данная команда делает.

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

Если надо что-то другое, то вы опишите - подумаю и может быть даже реализую, если не сильно сложно будет. Отбора по XPath пока не будет :)
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):В рассматриваемом выше файле 3.xml для узла function потомки могут быть: description, return value и argument. Команда Show same нужна для того, чтобы просмотреть все узлы типа argument (прямые потомки function!) таблицей.
если честно - все равно не понятно. В том-то и дело, что данная команда понимается и принимает для использования именно что в духе "фильтр по XPath". Причем в этом случае сущность табличного представления каких-то отфильтрованных данных лишь увеличивает свою пользу и её понимание - ибо происходит отсекание ненужного, а оставшееся весьма вероятно превращается в табличное представление.
А сейчас... Я открыл этот файл, выбрал (точнее я ОООЧЕНЬ помучался, пока искал узел, содержащий) return value, выбрал эту команду ... и... и справа в таблице появилась одна строка. И что это означает? Не понял. А вот если бы исчезли ВСЕ лишние узлы - то тогда бы понял. Ибо может быть на весь файл этот узел есть лишь в одном варианте, ибо я же замучился его выискивать! А как это понять? Только лишь, если бы из дерева исчезли все остальные узлы!
Далее выбрал argument и .. и плагин задумался секунд на 5/7 .. и рухнул, а за ним и тотал рухнул нафиг. падает в любой разрядности. но в 32-й чаще! Т.е. 64 может иногда и не упасть при фильтрации.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

return value, выбрал эту команду ... и... и справа в таблице появилась одна строка.
Так и задумано: отображаются только прямые потомки, имеющие тот же тег, что и текущий. Обратите внимание, что после выполнения команды фокус переходит на родительский узел. Поскольку return value у function один, то он один и показывается. Мне кажется вы чего другого ожидаете и данная функция никак не бьется с вашими ожиданиями.
Изменю название на "Show the same siblings" (показать похожие на этом же уровне). Длинновато, но вроде однозначное описание.

Дерево всегда неизменно. Его фильтровать не получится, т.к. данные хранятся прямо в нем. Можно конечно перестраивать, но на больших XML это будет медленно.
точнее я ОООЧЕНЬ помучался, пока искал узел, содержащий
Наверно стоит добавить поиск по дереву :)

Можно поподробнее, что именно надо сделать, чтобы плагин упал? Я повторить не могу. 4-ый узел function содержит return value.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Можно поподробнее, что именно надо сделать, чтобы плагин упал?
да вроде все просто. открываем файл 3.xml. Открываем узел function6. Выделяем description. Вызываем конт.меню и выбираем пункт Show same. И вуаля....
little-brother писал(а):отображаются только прямые потомки, имеющие тот же тег, что и текущий. Обратите внимание, что после выполнения команды фокус переходит на родительский узел.
А этот переход лишь ухудшает понимание и использование дерева. Ведь после того, как узел выделен, то никаким образом его не перевести в режим отображения его элементов.
Т.е. из Изображение
никак не получить Изображение
Только если выделить другой узел и потом опять вернуться к этому! Это нефига не удобно и не прозрачно! Любое выделение узла подразумевает, что будет отображено ТО - что под этим узлом прячется. На то это и дерево XML! А тут выделение есть, а отображение совсем другого рода показывается.
Плюс зачем в табличном представлении колонка #CONTENT ? Она же просто показывает склеенное значение предыдущих столбцов. Ну а нафига оно???
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Открываем узел function6. Выделяем description.
Повторилось. Отлично, будет с чего начать копать - я на одиночных узлах не проверял, т.к. для них смысла нет. Как оказалось зря :)
Ведь после того, как узел выделен, то никаким образом его не перевести в режим отображения его элементов.
Добавлю чтобы повторный клик по выделенному узлу вызывал перевод в обычный режим (точнее просто вызывал обновление таблицы).
А можно просто по соотв. строке кликнуть в таблице.
зачем в табличном представлении колонка #CONTENT ?
Это чтобы можно было искать по всему содержимому, а не только в том, что в прямых потомках.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Это чтобы можно было искать по всему содержимому, а не только в том, что в прямых потомках.
Ну, реализовывать это наверное нужно, конечно же. Но вот визуализировать в столбце как бы !!!ДАННЫХ!!!! - очень не рекомендуется.
Совершенно сбивает с толку и понимания - так ЧТО же такое это ТАКОЕ мне для глаз отрисовывается - типа в двойном варианте...
Двойной Удар по глазам? ЖКВД?)))))
Ответить