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] XML Review - просмотр XML и JSON файлов
Goto page 1, 2  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: 178

Post (Separately) Posted: Tue Mar 15, 2022 18:13    Post subject: [wlx] XML Review - просмотр XML и JSON файлов Reply with quote

XML Review 3.2.1

Плагин для просмотра XML и JSON файлов. Три режима просмотра:
    - Отформатированный текст с построением дерева узлов. Возможна фильтрация узлов на основе XPath.
    - Исходный файл с валидацией по xsd схеме или без неё.
    - Преобразованный на основе указанного xslt шаблона файл.
Расширения по умолчанию xml, xsd, xsl, xslt, wsdl, json.

Автор: olegvsk
https://olegvsk.synology.me

Скрин
Скачать по прямой ссылке: https://olegvsk.synology.me/XMLReview/xmlreview.zip

Это тема для обсуждения работы плагина.

Я НЕ автор! его сайт: https://olegvsk.synology.me/XMLReview/xmlreview.htm
Его почта: olegvsk@outlook.com


Last edited by Destiny on Thu Mar 17, 2022 13:43; edited 1 time in total
Back to top
View user's profile Send private message
olegvsk



Joined: 17 Dec 2020
Posts: 23

Post (Separately) Posted: Tue Mar 15, 2022 22:13    Post subject: Reply with quote

Благодарю за внимание. Я автор, с удовольствием отвечу на вопросы/предложения/критику.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 178

Post (Separately) Posted: Thu Mar 17, 2022 13:09    Post subject: Reply with quote

olegvsk wrote:
Я автор

Урра!!! День добрый!
Собсно по этому - но более по второму вашему продукту - Cert View есть вопросы/предложения.
В этой теме, значится, пройдемся то по этому продукту...
В теме про Cert View(https://forum.wincmd.ru/viewtopic.php?p=135008) напишу про неё.

XML Review - выполняет валидацию. Что по идее хорошо! НО! часто есть нужда в просмотре
ЧАСТИЧНЫХ xml! Т.е. файлов, где нет одного элемента верхнего уровня. А есть лишь список
подэлементов. Ваш плагин в этом случае отображает лишь первого представителя из этого
списка и всё. Потому как есть ошибка валидации КАК БЫ ожидаемого настоящего XML дерева.
НО в этом конкретном случае было бы очень полезно иметь некую псевдозаглушку, которую
можно даже настраивать в диалоге настроек, работающую как КОРНЕВОЙ фиктивный первый
элемент. Так мы бы хоть и искусственно, но вышли бы из сложного положения. К примеру,
по умолчанию, пусть это будет тег <ROOT_TAG>....</ROOT_TAG>
И тогда, если встречается ошибка парсинга
Position ....: В документах XML допускается только один элемент верхнего уровня.
то, если в настройках включено - обкладывать все содержимое файла тегом ROOT_TAG - значит
эта ошибка была бы нивелирована! И тогда все содержимое файла по сути стало бы однозначно
валидным, т.к. оно будет обложено одним тегом верхнего уровня, что и требуется по правиламWink

При генерации XPath для повторяющихся тегов вы не вставляете
адресный идентификатор [i], где i - это число по порядку в повторе.
Code:

<LIST_OF_PERSONS>
  <DATA>
    <NAME>...</NAME>
    <ID>...</ID>
    <PASSPORT>
      <SERIJA>...</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>

И вот для второй ДАТЫ для тега "Серия Паспорта", к примеру, XPath должен быть вида:
/LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA

А у вас будет написано просто /LIST_OF_PERSONS/DATA/PASSPORT/SERIJA

вот сторонний ресурс есть, где можно проверить мои слова:
https://xmltoolbox.appspot.com/xpath_generator.html


Тоже и для JSON файла. Самой валидации теперь вроде как нет в меню, т.е. саму
ошибку вы не пишите, НО и парсинг файла далее не производите, если встретили её.
К примеру, в некоторых JSON файлах после элементов пишутся комментарии.
Code:

    "Common": {
        "ButtonRadius": 0,
        "WindowBorderRadius": 3, // 0 - None, 1 - Top, 2 - Both, 3 - Small
        "ClientBackColor": "1d8abd",
        "GroupBoxColor": "1586bb", // Required
        "PaintClassicFocus": true
    }

стандартом файла они вроде не предусмотрены, и ваш парсинг обрывается на
Code:

{
    "Common":{
        "ButtonRadius":0,
        "WindowBorderRadius":3
    }
}

И хорошо бы, чтоб в такой ситуации, во-первых, все же причина прекращения парсинга писалась.
Код явно же по какой-то причине прекратил работу на символах ": 3" или " //"?
Ну и во-вторых, чтобы подобное прощалось для JSON файлов. Понятно, что список "ошибок",
подобных этой, еще тока будет наполняться, но надо же с чего-то начинать)))
Back to top
View user's profile Send private message
little-brother



Joined: 29 Sep 2021
Posts: 168

Post (Separately) Posted: Thu Mar 17, 2022 16:40    Post subject: Reply with quote

olegvsk,
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 178

Post (Separately) Posted: Thu Mar 17, 2022 18:12    Post subject: Reply with quote

little-brother
Стопэ)))
Всё под контролем!
Ничего Wink не забыто и всё используется как надо)))
Но кое-кому надо помочь, чтобы товарищу было уютнее в этой версии плагина.
А мы с вами ещё погуляем на именинах очередной версии плагина)))
Back to top
View user's profile Send private message
olegvsk



Joined: 17 Dec 2020
Posts: 23

Post (Separately) Posted: Thu Mar 17, 2022 23:48    Post subject: Reply with quote

Destiny,
Quote:
Т.е. файлов, где нет одного элемента верхнего уровня

Ну, ошибки в структуре могут быть какие угодно, под каждую подпорку не сделаешь. Мне, честно говоря, крайне редко встречались ЧАСТИЧНЫЕ xml. Но, возможно, кому-то это действительно будет полезно.

Quote:
При генерации XPath для повторяющихся тегов вы не вставляете адресный идентификатор [i]

У меня XPath используется для фильтрации тэгов, т. е. служит предикатом запроса. С индексами в пути такой фильтр работать не будет.

Quote:
И хорошо бы, чтоб в такой ситуации, во-первых, все же причина прекращения парсинга писалась

Согласен, какую-то ошибку надо показывать.

Quote:
Ну и во-вторых, чтобы подобное прощалось для JSON файлов

Поскольку комментарии форматом JSON не описаны, трудно формализовать, что именно нужно прощать, у каждого может быть свой вариант дополнения формата.
Back to top
View user's profile Send private message
Destiny



Joined: 15 Dec 2015
Posts: 178

Post (Separately) Posted: Fri Mar 18, 2022 14:01    Post subject: Reply with quote

olegvsk wrote:
Ну, ошибки в структуре могут быть какие угодно, под каждую подпорку не сделаешь. Мне, честно говоря, крайне редко встречались ЧАСТИЧНЫЕ xml. Но, возможно, кому-то это действительно будет полезно.

Ну дак, речь-то именно и только лишь об одном варианте - когда используешь файлы НЕ финальные, а элементы, из которых потом будет слеплен финал. И вот в отдельно взятом "псевдо"XML файле есть набор своих конкретных тегов, которые сами по себе - совершенно корректны. Так зачем вы обрываете парсинг файла, если не нашли корневой элемент? Считайте это "предупреждением", но всю остальную структуру-то показывайте Cool . Ведь вы же даже не пишите при открытии такого файла - СРАЗУ не пишите - что была найдена ошибка целостности структуры XML Rolling Eyes Об этом пользователь узнает - ЛИШЬ! если он откроет режим просмотра CTRL+2! А часто ли люди на него будут переключаться? Они откроют файл, увидят там тока один элемент вместо ...цати - подумают, что в файле ошибка - не тот вывод получен, закроют плаг и удалят файл. И да - я уже подобное видел. Фантазировать на пустом месте мне сейчас не приходится Crying or Very sad Тут имхо тока два варианта - либо СРАЗУ писать поверх плага с открытым таким "неполноценным" файлом, что найдены ошибки, мол, переключайтесь в режим CTRL+2, чтобы их все увидеть. Либо всё же считать подобное не ошибкой, а формировать втихую тег-заглушку - как корневой элемент. И конечно же второе предпочтительнее, неужели нет?

olegvsk wrote:
У меня XPath используется для фильтрации тэгов, т. е. служит предикатом запроса. С индексами в пути такой фильтр работать не будет.

Ок, мы знаем, что XPath давно известный язык запросов к элементам xml или xhtml документа. Также как SQL, XPath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо всего лишь создать запрос, описывающий эти данные. Всю «черную» работу за вас выполнит интерпретатор языка XPath. И да, в нем есть вариант этого XPath со скобочками [...] и без. Просто они преследуют разные цели))) Когда я копирую себе ссылку на выбранный элемент - я с вероятностью в 90% хочу увидеть/найти/сохранить именно выбранный элемент, а не всё его подобие. Ибо если я скопирую ВАШ вариант XPath для указанного мной примера /LIST_OF_PERSONS/DATA/PASSPORT/SERIJA и воткну его в спецПО, которое заточено на поддержку и работу среди всех загруженных в него XML, чтобы выполнить поиск НУЖНОГО МНЕ второго элемента - то я получу ВСЕ элементы. Согласитесь, что УДАЛИТЬ ненужные скобочки мне будет куда-как проще (ЕСЛИ вдруг я на самом деле преследовал целью выбрать ВСЕ схожие теги из структуры XML), нежели чем добавлять их, ТОЧНО не зная - а на каком по порядку следования схожем(pattern-matching specification) теге находится нужный мне элемент Rolling Eyes . Но чаще нужно именно точечное действие после копирования - т.е. получение именно из ....дцатого элемента искомого значение. И тогда это значит, что из /LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA мне вроде как проще получить /LIST_OF_PERSONS/DATA/PASSPORT/SERIJA, чем обратное преобразование, особенно когда я не знаю эту ...дцатость, это число 2 в моем примере. Так может тогда разрешить это противоречие простым как мир способом - сделать ДВА варианта копирования? Первый вариант - точное следование иерархии и для моего примера оно даст /LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA. И второй вариант - для выборки подобия и для моего примера оно даст /LIST_OF_PERSONS/DATA/PASSPORT/SERIJA, ну т.е. то, что уже сейчас и есть. И с фильтром тогда становится понятно - по какому XPath он работает: по выборке подобия.

olegvsk wrote:
Поскольку комментарии форматом JSON не описаны, трудно формализовать, что именно нужно прощать, у каждого может быть свой вариант дополнения формата.

Поэтому я и написал сразу:
Quote:
Понятно, что список "ошибок", подобных этой, еще тока будет наполняться, но надо же с чего-то начинать)))

Не может же быть такого, чтобы плагин работал ЛИШЬ и ТОЛЬКО для четко формализованных и целиком безгрешных по формату JSON файлов.


Last edited by Destiny on Mon Mar 21, 2022 12:31; edited 7 times in total
Back to top
View user's profile Send private message
olegvsk



Joined: 17 Dec 2020
Posts: 23

Post (Separately) Posted: Fri Mar 18, 2022 20:13    Post subject: Reply with quote

Destiny wrote:

Я понял ваши пожелания, постараюсь учесть их.
Back to top
View user's profile Send private message
BlackFox



Joined: 18 Dec 2004
Posts: 24
Location: Mayence, Germany

Post (Separately) Posted: Wed Jul 27, 2022 14:54    Post subject: Reply with quote

Добрый день.
есть мелкие пожелания к плагину XML Review, а именно - добавить тёмный режим. В АПИ к листер плагинам есть определение активности тёмного режима, из которого можно его активировать.
Пока руками попытался исправить цвета под тёмный режим - почти все цвета меняются. Из того, что не меняется:
1. цвет структуры XML (знаки < > = --> " / и т.п.) - всегда тёмно-синий.
2. фон активной линии в дереве - всегда белый.
3. все элементы плагина (строка статуса, скроллбары, поле для номеров строк, рамки элементов управления) всегда серые.
Ещё хотелось бы выделение цветом текущей строки (той строки, где находится курсор) в тексте.

В остальном - плагин удобный, на открытие работает быстро (на открытие 60МЬ ХML файла с закрытыми ветками тратит всего 4 секунды - быстрее только Foxe, JSON 3МБ - тоже 2 секунды). Но: открытие всех веток в этом 60МБ XML-файле занимает 92 секунды, тоталкоммандер при этом вообще не реагирует ни на что. Повторное отрытие этого же файла (без веток) приводит к MsgBox "FILEINFO_WLX Address of MappedFile > 4GB" с кнопкой ОК, после нажатия которой, правда, всё вроде бы и дальше работает.
Последняя хотелка - в поиске можно реализовать настройку "по границе слова", чтобы искать только это вхождение (например, при поиске eth1/1 выдавать только вхождения eth1/1, а не все, включая eth1/17, eth1/11 и т.д.)?
Можете посмотреть, что из этого можно реализовать или исправить?
Заранее спасибо!


Last edited by BlackFox on Tue Aug 02, 2022 10:31; edited 1 time in total
Back to top
View user's profile Send private message
junk



Joined: 27 Jul 2015
Posts: 27

Post (Separately) Posted: Wed Jul 27, 2022 19:44    Post subject: Reply with quote

Добрый день!

olegvsk, сделайте пожалуйста выбор сохранения настроек, а то сейчас ini-файл всегда создаётся в папке плагина, которая может быть недоступна для записи.
Ну или хотя бы берите путь из DefaultIniName на SetDefaultParams, чтобы пользователь мог поменять.
Спасибо.
Back to top
View user's profile Send private message
olegvsk



Joined: 17 Dec 2020
Posts: 23

Post (Separately) Posted: Sat Jul 30, 2022 16:39    Post subject: Reply with quote

BlackFox,
Здравствуйте.

Quote:
добавить тёмный режим

Попробую, или просто добавлю настроек цветов.

Quote:
выделение цветом текущей строки

Это можно.

Quote:
MsgBox "FILEINFO_WLX Address of MappedFile > 4GB"

Не сталкивался с таким. Подозреваю, это сообщение из другого плагина. Вот здесь обсуждают.

Quote:
реализовать настройку "по границе слова"

Сделаю.

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

junk,
Добрый день.
Думаю, вариант с DefaultIniName оптимален, сделаю так.
Back to top
View user's profile Send private message
BlackFox



Joined: 18 Dec 2004
Posts: 24
Location: Mayence, Germany

Post (Separately) Posted: Sun Jul 31, 2022 15:36    Post subject: Reply with quote

olegvsk wrote:
BlackFox,
Quote:
MsgBox "FILEINFO_WLX Address of MappedFile > 4GB"

Не сталкивался с таким. Подозреваю, это сообщение из другого плагина. Вот здесь обсуждают.

Да, что-то не обратил внимания на заголовок, в котором написано,что это не Ваш плагин. Тогда забейте.
Back to top
View user's profile Send private message
junk



Joined: 27 Jul 2015
Posts: 27

Post (Separately) Posted: Thu Aug 04, 2022 18:07    Post subject: Reply with quote

olegvsk,
Ещё вопрос. В чём смысл кастомного окна поиска? Почему не используется стандартный тоталовский? Из-за этого при переключении между плагинами текст приходится заново вбивать. История поиска опять же своя почему-то.
Ещё Ваш диалог поиска хоть и модальный, но почему-то иногда оказывается "за" окном листера, из-за чего листер не реагирует ни на что.
Back to top
View user's profile Send private message
olegvsk



Joined: 17 Dec 2020
Posts: 23

Post (Separately) Posted: Tue Sep 20, 2022 18:21    Post subject: Reply with quote

Выложил новую версию http://totalcmd.net/plugring/xmlreview1.0.html.
Подсветка текущей строки, несколько новых настроек цветов, настройка "Whole words" в поиске, выбор расположения ini файла. Добавил сортировку узлов в дереве.

junk
Исходил из того, что у специализированных плагинов должна быть своя история поиска. Понятно, что кому-то удобно так, кому-то иначе.
Quote:
Ещё Ваш диалог поиска хоть и модальный, но почему-то иногда оказывается "за" окном листера, из-за чего листер не реагирует ни на что.

Есть такая проблема. Слегка доработал, сейчас окошко не должно теряться.
Back to top
View user's profile Send private message
junk



Joined: 27 Jul 2015
Posts: 27

Post (Separately) Posted: Thu Sep 22, 2022 12:46    Post subject: Reply with quote

olegvsk, спасибо за обновление, стало лучше!
По поводу кастомного поиска не разделяю Вашего мнения, мне кажется одно окно гораздо удобнее, особенно когда текст ищется в файлах разных типов. Вы легко поймёте, например, ищется значения и в конфигах (xml), и в исходных текстах (c/cpp/h/etc), приходится искомую строку дважды вбивать, а так хваталобы одного (!) нажатия F3 в каждом новом окне.

Ещё момент, похоже иногда плагин кидает исключение на выгрузке (тотал показывает окно с эксепшном).
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 1, 2  Next
Page 1 of 2

 
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