Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[wlx] xmltab - просмотр XML файлов
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Fri Feb 25, 2022 20:31    Post subject: Reply with quote

little-brother wrote:
лучше использовать XMLReview-плагин

У него свои ошибки-недоделки есть)) которые не позволяют его использовать. Да и темы-обсуждения тут на форуме у него нет. Некуда писать пожелания)))
Уж лучше мы ваш, мы лучший мир ДОстроим.. а затем!!! будем использовать тока ваш плагин)))
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Fri Feb 25, 2022 21:06    Post subject: Reply with quote

Quote:

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

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

Судя по вот этой странице плагина, писать можно olegvsk@outlook.com.
Для нетабличных данных этот плагин лучше моего - он быстрее, мощнее и красивее. И если третье теоретически можно исправить, то сделать быстрее у меня не получится - данные в стандартный компонент Windows для отображения дерева добавляются очень медленно. И по фунционалу тоже не догнать.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Sat Feb 26, 2022 20:57    Post subject: Reply with quote

little-brother wrote:
он быстрее, мощнее и красивее.

и все же не открывает все те файлы, что уже умеет открывать ваш)))
так что я лучше посижу подожду - авось случайно как-нить реализация работы с XPath все же просто появится тут))
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Sat Feb 26, 2022 21:14    Post subject: Reply with quote

В смысле появится? Она уже есть! Laughing
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Sat Feb 26, 2022 21:24    Post subject: Reply with quote

Кстати, насчет табличного представления в правой части)))
КАК это смешно не звучит, но опять-таки неплохая часть моих файлов под это определение подойдет с одним лишь отличием. Файлы содержат табличные данные, НО! не имеют первичного корня. Нет первого и единственного тега)) который должен охватывать все строки
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()

ну что - фиксим?
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Sat Feb 26, 2022 21:54    Post subject: Reply with quote

С этим есть проблема: допустим 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 отфильтровать только узлы с тегом текущего.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Sat Feb 26, 2022 22:33    Post subject: Reply with quote

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

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

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

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

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

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

кстати - ОООЧЕНЬ прикольная опция. Совсем о таком даже не подумалось в первой. Но сейчас - даже очень интересной кажется)))
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Sat Feb 26, 2022 23:14    Post subject: Reply with quote

А как может быть XML без корневого тега то?
Code:

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

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

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

Это просто у кого то слишком много свободного времени и пора искать работу. Хотя с текущим положением дел, когда Сбер и Яндекс просели и могут начать увольнять погроммистов, рынок может и просесть Sad
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Sun Feb 27, 2022 11:35    Post subject: Reply with quote

little-brother wrote:
Это же полностью невалидная конструкция.

только в рамках конкретно одного взятого файла.
НО т.к. его использование идет в другом файле, куда его содержимое включается, то в ИТОГЕ весь xml представлен валидно. С корневыми тегами.
Но я-то файлы просматриваю напрямую - БЕЗ этого использования... Мне эта опция весьма нужна. Чтобы имитировать это включение/обхват.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Mon Feb 28, 2022 16:45    Post subject: Reply with quote

Но про охватывающий тег - я даже склонен думать, что делать это (ваша миссия, если вы возьметесь за её выполнение, мистер Хант),
можно и на потом отложить. Более главное дело - это подправить 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>
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Tue Mar 01, 2022 12:22    Post subject: Reply with quote

Quote:
охватывающий тег

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

А вот с XPath проблема есть: строки в таблице и дерево сейчас в плагине никак не связаны, т.е. сказать что отображает текущая строка, чтобы получить XML-узел, а по нему XPath, уже нельзя. Думаю, что можно сделать.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Tue Mar 01, 2022 12:38    Post subject: Reply with quote

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

а разве у узла нет поля UserDATA, ну или как там оно может звучать?
Чтобы заносить свою инфу, кроме того, что узел должен отобразить как текстовую видимую информацию.
И тогда записывать в это поле текущий XPath этого узла на моменте генерации самого дерева. И тогда когда надо его скопировать - то просто get_UserData для выбранного узла и все. И это сработает для ситуации, когда мы по факту фокусом на таблице висим. Просто у дерева спросить текущий выделенный узел, а у него опять просто get_UserData.
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Tue Mar 01, 2022 12:57    Post subject: Reply with quote

У дерева есть, он используется - там хранится ссылка на привязанный XML-узел. А вот у строк таблицы уже нет. Так как используется виртуальный режим отображения (для скорости), то реальных строк нет следовательно Userdata для каждой из них.

Ссылка на XML-узел в данном случае нужна именно для строки, т.к. два вида отображения - как содержимое узла SINGLE (тут можно взять и из текущего узла дерева), и список дочерних узлов TABLE (тут уже желательно иметь ссылку). Пробовал брать узел из дерева и отсчитывать по строкам для него, но это все криво, т.к. строки могут быть пересортированы и отфильтрованы. Так что думаю как сделать.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 212

Post (Separately) Posted: Tue Mar 01, 2022 13:19    Post subject: Reply with quote

Я может что совсем не понимаю, но разве не всё очень просто)))
тогда просто не бить меня, просьба... а вот мысля моя такова:

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

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

и как бы вроде всё...
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 205

Post (Separately) Posted: Tue Mar 01, 2022 14:30    Post subject: Reply with quote

Почти верно, но это режим 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
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
Page 2 of 7

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group