[wlx] xmltab - просмотр XML файлов
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next  :| |:
Total Commander -> Плагины Total Commander

#16:  Author: Destiny PostPosted: Fri Feb 25, 2022 20:31
    —
little-brother wrote:
лучше использовать XMLReview-плагин

У него свои ошибки-недоделки есть)) которые не позволяют его использовать. Да и темы-обсуждения тут на форуме у него нет. Некуда писать пожелания)))
Уж лучше мы ваш, мы лучший мир ДОстроим.. а затем!!! будем использовать тока ваш плагин)))

#17:  Author: little-brother PostPosted: Fri Feb 25, 2022 21:06
    —
Quote:

темы-обсуждения тут на форуме у него нет. Некуда писать пожелания)))

Да, он оказался мудрее меня! Laughing Laughing Laughing

Судя по вот этой странице плагина, писать можно olegvsk@outlook.com.
Для нетабличных данных этот плагин лучше моего - он быстрее, мощнее и красивее. И если третье теоретически можно исправить, то сделать быстрее у меня не получится - данные в стандартный компонент Windows для отображения дерева добавляются очень медленно. И по фунционалу тоже не догнать.

#18:  Author: Destiny PostPosted: Sat Feb 26, 2022 20:57
    —
little-brother wrote:
он быстрее, мощнее и красивее.

и все же не открывает все те файлы, что уже умеет открывать ваш)))
так что я лучше посижу подожду - авось случайно как-нить реализация работы с XPath все же просто появится тут))

#19:  Author: little-brother PostPosted: Sat Feb 26, 2022 21:14
    —
В смысле появится? Она уже есть! Laughing

#20:  Author: Destiny PostPosted: Sat Feb 26, 2022 21:24
    —
Кстати, насчет табличного представления в правой части)))
КАК это смешно не звучит, но опять-таки неплохая часть моих файлов под это определение подойдет с одним лишь отличием. Файлы содержат табличные данные, НО! не имеют первичного корня. Нет первого и единственного тега)) который должен охватывать все строки
Code:

    <Y>a</Y> <-- ROWS: 1/2
    <Y>b</Y> <-- ROWS: 2/2

Т.е. нет тегов <X></X> вокруг.
В связи с чем плагин-то работает шикарно - он-таки показывает все табличные данные, но не в виде таблицы((( Потому что не хватает этого верхнеуровневого тега <X>.
В связи с чем предложение. Равно как есть в контекстном меню возможность смотреть в данный момент времени на фильтры, или не смотреть на них. Добавить пункт меню "Root tag all contents" - Охватить корневым тегом все содержимое. По его активации в дерево парсинга принудительно вставляется первым тегом <X> а последним тегом вставляется </X>. Ну или какой-то другой красивый тег))
В итоге мы получаем красивое табличное представление, что и задумывалось для таких случаев!

Добавлено спустя 30 минут:

little-brother wrote:
В смысле появится? Она уже есть!

Даааааа, вас явно окружают нимфы и музы программирования)))

НО есть нюанс. XPath есть и для тегов и для атрибутов тегов))

Code:
<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>


чтобы достать атрибут lang для первой книги я пишу:
/book[1]/title/@lang
А у вас сейчас есть возможность получить XPath ТОЛЬКО для узла - для тега title! Хотя и для значения тоже должна существовать возможность скопировать XPath Wink В нашем случае это будет: /book[1]/title/text()

ну что - фиксим?

#21:  Author: little-brother PostPosted: Sat Feb 26, 2022 21:54
    —
С этим есть проблема: допустим XML имеет вид
Code:

<X>
     123
     <y>aaa</y>
     <y>bbb</y>
     <z>ccc</z>
</X>


Строки с тегом y вроде как можно отобразить таблично, а вот текстовый узел 123 и z выбиваются из этого. Сейчас плагин проверяет, что все дочерние узлы X имеют одинаковый тег, и, если все ок, то показывается таблица (TABLE), иначе показывается содержимое узла по аттрибутам (SINGLE).

Насколько я понимаю вы предлагаете добавить настройку, чтобы можно было игнорировать 123 и ccc, Однако, что делать если y-узлов столько же сколько и z? А могут же быть еще другие.

Можно конечно добавить в дереве выпадающее меню ignore/hide для узла, т.е. получив подобный XML, вам нужно будет выставить руками ignore для 123 и z-узла, после чего данные будут выведены как таблица. Однако, если X-имеет достаточно много узлов и например 10-20 неподходящих, то выставление ignore уже может стать утомительным, да и не очевидно это как то работать будет.

Хотя можно добавить для узла в выпадающем меню "Показать только такие же" и соответственно для X отфильтровать только узлы с тегом текущего.

#22:  Author: Destiny PostPosted: Sat Feb 26, 2022 22:33
    —
little-brother wrote:
Насколько я понимаю вы предлагаете добавить настройку, чтобы можно было игнорировать 123 и ccc, Однако, что делать если y-узлов столько же сколько и z? А могут же быть еще другие.

нет - нет! никаких доп.игнорирований!
именно просто жесткое добавление Охватывающего тега Х вокруг всего и вся.
Как говорится - под присмотром пользователя и под его ответственность.
Запоминать даже положение этой опции не надо.
На каждое открытие XML - она не активна, и лишь если я выбрал ее - то охватывающий тег принудительно добавляется в дерево парсинга.

Добавлено спустя 4 минуты:

И кстати, я сейчас проверил поведение при добавленном субтеге, отличающемся от остальных - аналог вашего Z, при массовом наличии тегов Y...
А и ничего - нормально и верно плагин все отобразил в табличном виде))) И все Y и потом этот Z. Всё красиво!!!

Добавлено спустя 2 минуты:

little-brother wrote:
Хотя можно добавить для узла в выпадающем меню "Показать только такие же" и соответственно для X отфильтровать только узлы с тегом текущего.

кстати - ОООЧЕНЬ прикольная опция. Совсем о таком даже не подумалось в первой. Но сейчас - даже очень интересной кажется)))

#23:  Author: little-brother PostPosted: Sat Feb 26, 2022 23:14
    —
А как может быть XML без корневого тега то?
Code:

<X></X>
<X></X>

Это же полностью невалидная конструкция. Хотя чего это я спрашиваю Laughing Laughing Laughing

Quote:
вас явно окружают нимфы и музы программирования))

Это просто у кого то слишком много свободного времени и пора искать работу. Хотя с текущим положением дел, когда Сбер и Яндекс просели и могут начать увольнять погроммистов, рынок может и просесть Sad

#24:  Author: Destiny PostPosted: Sun Feb 27, 2022 11:35
    —
little-brother wrote:
Это же полностью невалидная конструкция.

только в рамках конкретно одного взятого файла.
НО т.к. его использование идет в другом файле, куда его содержимое включается, то в ИТОГЕ весь xml представлен валидно. С корневыми тегами.
Но я-то файлы просматриваю напрямую - БЕЗ этого использования... Мне эта опция весьма нужна. Чтобы имитировать это включение/обхват.

#25:  Author: Destiny PostPosted: Mon Feb 28, 2022 16:45
    —
Но про охватывающий тег - я даже склонен думать, что делать это (ваша миссия, если вы возьметесь за её выполнение, мистер Хант),
можно и на потом отложить. Более главное дело - это подправить XPath для атрибутов узлов и их значений.
чтоб работали/копировались:
/book[1]/title/@lang
и
/book[1]/title/text()
для, к примеру,
Code:
<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

#26:  Author: little-brother PostPosted: Tue Mar 01, 2022 12:22
    —
Quote:
охватывающий тег

Это строчек 10 кода.

А вот с XPath проблема есть: строки в таблице и дерево сейчас в плагине никак не связаны, т.е. сказать что отображает текущая строка, чтобы получить XML-узел, а по нему XPath, уже нельзя. Думаю, что можно сделать.

#27:  Author: Destiny PostPosted: Tue Mar 01, 2022 12:38
    —
little-brother wrote:
строки в таблице и дерево сейчас в плагине никак не связаны, т.е. сказать что отображает текущая строка, чтобы получить XML-узел, а по нему XPath, уже нельзя

а разве у узла нет поля UserDATA, ну или как там оно может звучать?
Чтобы заносить свою инфу, кроме того, что узел должен отобразить как текстовую видимую информацию.
И тогда записывать в это поле текущий XPath этого узла на моменте генерации самого дерева. И тогда когда надо его скопировать - то просто get_UserData для выбранного узла и все. И это сработает для ситуации, когда мы по факту фокусом на таблице висим. Просто у дерева спросить текущий выделенный узел, а у него опять просто get_UserData.

#28:  Author: little-brother PostPosted: Tue Mar 01, 2022 12:57
    —
У дерева есть, он используется - там хранится ссылка на привязанный XML-узел. А вот у строк таблицы уже нет. Так как используется виртуальный режим отображения (для скорости), то реальных строк нет следовательно Userdata для каждой из них.

Ссылка на XML-узел в данном случае нужна именно для строки, т.к. два вида отображения - как содержимое узла SINGLE (тут можно взять и из текущего узла дерева), и список дочерних узлов TABLE (тут уже желательно иметь ссылку). Пробовал брать узел из дерева и отсчитывать по строкам для него, но это все криво, т.к. строки могут быть пересортированы и отфильтрованы. Так что думаю как сделать.

#29:  Author: Destiny PostPosted: Tue Mar 01, 2022 13:19
    —
Я может что совсем не понимаю, но разве не всё очень просто)))
тогда просто не бить меня, просьба... а вот мысля моя такова:

Когда выделен узел в дереве (как сейчас на скрине) - то XPath вроде как уже работает и дает верную строку.
/LIST_OF_PERSONS/DATA[1]/PASSPORT/SERIJA

А когда я тапну на элемент в таблице - то по идее к существующему пути, который уже есть для выделенного узла дерева, надо добавить текст из таблицы по логике:
если начинается на @ - то добавить как есть:
/LIST_OF_PERSONS/DATA[1]/PASSPORT/SERIJA/@lang
если начинается на # - то добавить фиксированную строку:
/LIST_OF_PERSONS/DATA[1]/PASSPORT/SERIJA/text()

и как бы вроде всё...

#30:  Author: little-brother PostPosted: Tue Mar 01, 2022 14:30
    —
Почти верно, но это режим SINGLE, отображение содержимого тега (его атрибутов и значений прямых потомков), т.е. когда по текущему узлу в дереве можно получить ссылку на XML-узел.
Проблема, когда отображается не содержимое узла, а список прямых потомков, как таблица (режим TABLE). Сейчас связи между потомком и представляющей его строкой - нет. Вот думаю как увязать, чтобы не слишком путано было.

Update #1: В общем и целом сделялъ. Осталось баги выловить.

Update #2: Вот альфа - https://disk.yandex.ru/d/Yt8pwJKmkh6SYA
Добавлено:
* XPath для строк таблицы
* Автоматическое добавление корня документа, если его нет
* Отображение соседних элементов имеющий тег, как у текущего в дереве. Т.е. если были теги x, x, x, z, x, то будут отобраны только x и показаны в таблице с 4-мя строками.
С XPath вроде все.
Текстовый узел всегда имеет /text() (без указания номера), CDATA и комментарии кривые, но мне пока лень.
Будет еще доработка по работе с ссылками в ячейках.


Last edited by little-brother on Tue Mar 01, 2022 22:29; edited 3 times in total



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next  :| |:
Page 2 of 7

Powered by phpBB © 2001, 2005 phpBB Group