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

#16:  Author: olegvsk PostPosted: Thu Sep 22, 2022 16:57
    —
junk wrote:
olegvsk, спасибо за обновление, стало лучше!
По поводу кастомного поиска не разделяю Вашего мнения, мне кажется одно окно гораздо удобнее, особенно когда текст ищется в файлах разных типов. Вы легко поймёте, например, ищется значения и в конфигах (xml), и в исходных текстах (c/cpp/h/etc), приходится искомую строку дважды вбивать, а так хваталобы одного (!) нажатия F3 в каждом новом окне.

Согласен, решение спорное, возможно, стоит переделать.

Quote:
похоже иногда плагин кидает исключение на выгрузке (тотал показывает окно с эксепшном)

Не замечал, но проверю. Есть какая-то закономерность?

#17:  Author: junk PostPosted: Fri Sep 23, 2022 11:43
    —
olegvsk wrote:
Не замечал, но проверю. Есть какая-то закономерность?

К сожалению, закономерности пока не замечаю.

#18:  Author: olegvsk PostPosted: Fri Sep 23, 2022 13:07
    —
junk wrote:

К сожалению, закономерности пока не замечаю.

Думаю, я нашёл, в чём может быть проблема. Перекачайте плагин http://totalcmd.net/download.php?id=xmlreview1.0. Если ошибка повторится - просьба, пришлите, пожалуйста, её текст (Ctrl+C или картинкой).

#19:  Author: junk PostPosted: Thu Oct 06, 2022 15:21
    —
olegvsk, с момента обновления ошибка ни разу не повторилась.

#20:  Author: olegvsk PostPosted: Sun Oct 09, 2022 23:30
    —
junk wrote:
olegvsk, с момента обновления ошибка ни разу не повторилась.

Отлично, спасибо.

#21:  Author: Destiny PostPosted: Sun Dec 04, 2022 19:48
    —
olegvsk
На предыдущей странице я показывал пример файла - для которого было бы удобно получить другой вариант XPath представления при копировании пути до искомого элемента...
И вот в этой версии (30.11.2022 XML Review 3.5) я увидел этот второй вариант, но немного странный результат выходит:
Ваш вариант:
/LIST_OF_PERSONS[1]/DATA[2]/PASSPORT[1]/SERIJA[1]
Ожидаемый вариант:
/LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA
Отношение "элемент массива" не указывается для явно одиночных субэлементов.
Корень LIST_OF_PERSONS - он один. Поэтому /LIST_OF_PERSONS/.
PASSPORT внутри второго субэлемента DATA: так же один - поэтому /PASSPORT/.
И собсно тоже и для SERIJA.

#22:  Author: olegvsk PostPosted: Sun Dec 04, 2022 21:41
    —
Destiny wrote:
Отношение "элемент массива" не указывается для явно одиночных субэлементов.

Зависит от того, где используется XPath. MS SQL, например, не примет /Root/OnlyNode, а попросит (/Root/OnlyNode)[1] либо/Root[1]/OnlyNode[1]. Поэтому сделал XPath избыточным.

#23:  Author: Destiny PostPosted: Mon Dec 05, 2022 13:32
    —
olegvsk wrote:
Зависит от того, где используется XPath. MS SQL, например, не примет /Root/OnlyNode, а попросит (/Root/OnlyNode)[1] либо /Root[1]/OnlyNode[1]. Поэтому сделал XPath избыточным.

Да, нашел инфу о том, что у мелкомягких свой подход с типизации данных в XQuery/XPath.
И да оба ваши варианта типа решают проблему. НО все же заметим, что первый вариант оказывается наиболее приближен к логическому выделению пути: /LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA
вот пример:
Code:

with TEST(info) as
(
   select info
   from   (values (cast('<LIST_OF_PERSONS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                           <DATA>
                             <NAME>nm1</NAME>
                             <ID>12</ID>
                             <PASSPORT>
                               <SERIJA>mn123</SERIJA>
                               <NOMER>3335</NOMER>
                             </PASSPORT>
                           </DATA>
                           <DATA>
                             <NAME>nm2</NAME>
                             <ID>23</ID>
                             <PASSPORT>
                               <SERIJA>mn354</SERIJA>
                               <NOMER>5645</NOMER>
                             </PASSPORT>
                           </DATA>
                           <DATA>
                             <NAME>nm3</NAME>
                             <ID>34</ID>
                             <PASSPORT>
                               <SERIJA>mn456</SERIJA>
                               <NOMER>64897</NOMER>
                             </PASSPORT>
                           </DATA>
                         </LIST_OF_PERSONS>' as xml))) TEST(info)
)
SELECT info.value('(/LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA)[1]', 'nvarchar(20)') as Seria
FROM   TEST;

Если MS SQL под рукой нет - то вот тут онлайн можно запустить:
https://data.stackexchange.com/stackoverflow/query/1683212?opt.withExecutionPlan=true

Т.е. для MS SQL да, надо делать допущение, но оно возможно быть минимальным! Т.е. основа это:
/LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA, а доработкой является лишь взятие основы в (...)[1]
И прошу заметить - этого действия вы все равно не делаете! А значит напрямую использовать этот путь
в MS SQL все равно нельзя Sad
Отсюда вывод-предложение. Команду копирования XPath стоит сделать в виде выпадающего меню и в нем
предлагать под какие задачи пользователю будет удобнее копировать этот путь.
Для простых, нетребовательных случаев это:
/LIST_OF_PERSONS/DATA/PASSPORT/SERIJA
хотя не могу найти пример такого использования, ведь это выборка всего и вся...
для более корректного уточнения, ибо мы же на конкретном элементе вызываем команду:
/LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA
спецом для использования в MS SQL напрямую:
(/LIST_OF_PERSONS/DATA[2]/PASSPORT/SERIJA)[1]

Кстати, проверять все пути вот тут: https://www.videlibri.de/cgi-bin/xidelcgi
можно - там все вариации спецификаций поддерживаются вроде как.

#24:  Author: olegvsk PostPosted: Mon Dec 05, 2022 15:03
    —
Destiny wrote:
Команду копирования XPath стоит сделать в виде выпадающего меню и в нем
предлагать под какие задачи пользователю будет удобнее копировать этот путь.

У вас слишком творческий подход Smile. Путь без индексов есть, путь с индексами (это была ваша идея, вполне благодарен вам за неё) есть, и на том же MS SQL он работает. Всех вариантов не предусмотришь, форма XPath сильно зависит от стоящей задачи.

#25:  Author: Destiny PostPosted: Mon Dec 05, 2022 16:30
    —
olegvsk wrote:
Destiny wrote:
Команду копирования XPath стоит сделать в виде выпадающего меню и в нем
предлагать под какие задачи пользователю будет удобнее копировать этот путь.

У вас слишком творческий подход Smile. Путь без индексов есть, путь с индексами (это была ваша идея, вполне благодарен вам за неё) есть, и на том же MS SQL он работает. Всех вариантов не предусмотришь, форма XPath сильно зависит от стоящей задачи.

Ну, поэтому и предлагается творчески обыграть эти варианты.
А пока что для вами же упомянутого MS SQL ваш же вариант НЕ работает полноценно))) Как и отмечено у вас - путь надо еще допом в (...)[1] оборачивать.
Поэтому не совсем понимаю, почему надо оставлять то - что есть, а не сделать потенциал для расширения. Причем с упрощением ! логики набора пути.
А то - что форма зависит - это да. У нас же тут не полноценный редактор XQuery - это да. Это налагает свои ограничения.

Оу! Еще про творчество! Интернационализа́ции проекта не будет? Чтоб свой язык интерфейса выбрать?

#26:  Author: olegvsk PostPosted: Mon Dec 05, 2022 18:20
    —
Destiny wrote:
путь надо еще допом в (...)[1] оборачивать

Не надо, если у всех узлов уже стоят индексы.

Destiny wrote:
Интернационализа́ции проекта не будет?

Честно говоря, не было в планах. Меню достаточно простое. Но, если есть необходимость, это несложно добавить.

#27:  Author: Destiny PostPosted: Mon Dec 05, 2022 19:22
    —
olegvsk wrote:
Не надо, если у всех узлов уже стоят индексы.

Надо, я же вам для чего ссылку дал на проверку онлайн? Без этого "обертывания" возникает ошибка
'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'

Добавлено спустя 53 секунды:

olegvsk wrote:
Меню достаточно простое.

Не только меню - а ВСЕ элементы взаимодействия с пользователем.
Т.е. в том числе и диалог Настроек)))

#28:  Author: Destiny PostPosted: Sun Mar 17, 2024 14:24
    —
olegvsk
Вопрос - при нахождении ошибки внутри содержимого тегов XML в текстовой части плагина справа - да,
выводится ошибка с указанием места ее нахождения. НО вот ведь нюанс - этот текстовый вывод ВСЕГО
содержимого XML может сперва быть оооооочень длинным и корректным, поэтому просто до конца этой
"портянки" вывода не долистываешь - думаешь, что всё и так хорошо. А ошибка-то есть, найдена, блин.
В связи с чем предложение - выводить ОКНО поверх всего с указанием того факта, что найдена ошибка,
а для перехода в место её обнаружения, мол, жмите ок. И после этого переводить фокус ввода сразу на
эту текстовую "портянку" вывода, сразу в конец: где и прописан собственно весь текст ошибки парсинга.

#29:  Author: olegvsk PostPosted: Mon Mar 18, 2024 13:36
    —
Destiny wrote:
olegvsk
Вопрос - при нахождении ошибки внутри содержимого тегов XML в текстовой части плагина справа - да,
выводится ошибка с указанием места ее нахождения. НО вот ведь нюанс - этот текстовый вывод ВСЕГО
содержимого XML может сперва быть оооооочень длинным и корректным, поэтому просто до конца этой
"портянки" вывода не долистываешь - думаешь, что всё и так хорошо. А ошибка-то есть, найдена, блин.
В связи с чем предложение - выводить ОКНО поверх всего с указанием того факта, что найдена ошибка,
а для перехода в место её обнаружения, мол, жмите ок. И после этого переводить фокус ввода сразу на
эту текстовую "портянку" вывода, сразу в конец: где и прописан собственно весь текст ошибки парсинга.

Выводить модальное окно с требованием обязательной реакции пользователя при быстром просмотре лишнее, мне кажется. Лучше просто при открытии сразу проматывать текст до ошибки. Или показывать ошибку в начале дерева, хотя многие на дерево вообще не смотрят.

#30:  Author: Destiny PostPosted: Mon Mar 18, 2024 15:44
    —
olegvsk wrote:
при быстром просмотре лишнее

может и лишнее, но фазу быстрого просмотра же можно узнать и реально только в нём просто скроллить до ошибки.
Но вот при просмотре Листером - имхо, надежнее выводить окно. Причем можно бы его именно с одной кнопкой выводить (и то - по опции!) - чтобы даже простейшее воспоследующее нажатие пробела или Enter выполняло его закрытие и переход/скролл к тексту ошибки.

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

olegvsk wrote:
Или показывать ошибку в начале дерева

Идея вполне трезвая... Но, с другой стороны - показ текста об ошибке в месте, НАИБОЛЕЕ близком к ошибке, тоже весьма логичен и практичен.



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


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

Goto page Previous  1, 2, 3  Next  :| |:
Page 2 of 3

Powered by phpBB © 2001, 2005 phpBB Group