XML Browser — навигация по XML-файлам

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

XML Browser — навигация по XML-файлам

Post by NightRoman »

Latest post of the previous page:

Плагин XMLDOM мешается при открытии файлов с "<#" в них. Замечено при запуске PowerShell скриптов по Enter, в них <#...#> используется, как блочный комментарий. Но это проявляется и для других файлов, например, .txt, если начать их с <# (см. пример). Каждый раз при Enter на таких файлах показывается диалог

Code: Select all

╔════════════════════ Error ════════════════════╗
║       file:///C:/ROM/APS/CADstack/1.txt       ║
║     Parse error 0xc00ce504: line 1 char 2     ║
║ A name was started with an invalid character. ║
╟───────────────────────────────────────────────╢
║                { OK } [ Edit ]                ║
╚═══════════════════════════════════════════════╝
Это неудобно. В случае PowerShell скриптов очень неудобно, они нередко начинаются с таких строк. Нельзя ли этого эффекта как-то избежать?

2. Хорошо бы при сообщениях об ошибках плагин себя идентифицировал. По выше указанному сообщению пришлось поломать голову, в чем дело, и кто это выводит.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

XML Browser — навигация по XML-файлам

Post by HaRT »

NightRoman wrote: проявляется и для других файлов, например, .txt, если начать их с <# (см. пример)
Подтверждаю.
NightRoman wrote: Хорошо бы при сообщениях об ошибках плагин себя идентифицировал.
Поддерживаю.
NightRoman wrote: поломать голову, в чем дело, и кто это выводит
Я не оправдываю плагин, но вообще-то можно через Lua Explorer увидеть, , и в меню плагинов ([b]F11[/b]) по [b]F3[/b] на “XML Browser” оно находится. Но признаю, что это трудоёмко.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Dworkin
Posts: 4
Joined: Wed 30 Aug, 2017 11:01

XML Browser — навигация по XML-файлам

Post by Dworkin »

После установки плагина XMLDOM252W3x64.zip не получается открыть ни одного файла через меню плагинов F11. Far 3.x
Не зависимо где расположен фаил, ошибка
The system cannot find the file specified.

Что делается не так?
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

XML Browser — навигация по XML-файлам

Post by HaRT »

Dworkin wrote: Wed 30 Aug, 2017 11:41После установки плагина XMLDOM252W3x64.zip не получается открыть ни одного файла через меню плагинов F11.
Какая битность Фара? Что происходит, если запустить Фар с одним только этим плагином (посредством /p)? В какой конкретно момент вылезает указанная ошибка и в каком виде?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Dworkin
Posts: 4
Joined: Wed 30 Aug, 2017 11:01

XML Browser — навигация по XML-файлам

Post by Dworkin »

* Far Manager, version 3.0 (build 5000) x64
* с одним XML Browser плагином, со всеми вместе, поведение одно и тоже:
-- перейти в панеле ФАРа на нужный фаил
-- вызвать меню плагинов через F11
-- выбрать XML Browser
Появляется красное диалоговое окно с текстом
Error
The system cannot find the file specified.
OK
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

XML Browser — навигация по XML-файлам

Post by zg »

а если добавить любой анси плагин?
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

XML Browser — навигация по XML-файлам

Post by HaRT »

Dworkin wrote: Wed 30 Aug, 2017 22:27x64
В 32-битном тоже воспроизводится.
Однако при входе в файл по Enter/CtrlPgDn ошибка не возникает (workaround!).
zg wrote: Wed 30 Aug, 2017 22:54если добавить любой анси плагин?
Тогда работает.
Получается, что титульный плагин при открытии через меню плагинов полагается на текущую директорию процесса Фара.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Dworkin
Posts: 4
Joined: Wed 30 Aug, 2017 11:01

XML Browser — навигация по XML-файлам

Post by Dworkin »

HaRT wrote: Wed 30 Aug, 2017 23:00Однако при входе в файл по Enter/CtrlPgDn ошибка не возникает (workaround!).
А можно подробнее, что такой за хитрая комбинация?
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

XML Browser — навигация по XML-файлам

Post by HaRT »

Dworkin wrote: Thu 31 Aug, 2017 08:39что такой за хитрая комбинация?
Обычный вход в папку/архив. Вы бы хоть базовую документацию по Фару изучили что ли. (В том моём сообщении ‘/’ означает «или», если что.)
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

XML Browser — навигация по XML-файлам

Post by buniak_a_h »

Помогите пожалуйста.
Файл для илюстрации проблем:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <FictionBook>
  4.  
  5.  <description>
  6.  
  7.   <title-info>
  8.  
  9.    <author>
  10.  
  11.     <first-name>Андрей</first-name>
  12.  
  13.     <middle-name>Олегович</middle-name>
  14.  
  15.     <last-name>Белянин</last-name>
  16.  
  17.    </author>
  18.  
  19.    <book-title>Ржавый меч царя Гороха</book-title>
  20.  
  21.   </title-info>
  22.  
  23.  </description>
  24.  
  25. </FictionBook>
В описании плагина (в части, посвящённой XPath-запросам) написано:
можно использовать XPath-выражения, возвращающие "скалярное" значение. Такое значение будет выводиться в окне сообщения.

В командной строке набираю:
xml:Test.xml:/FictionBook/description/title-info/author//text()
Получаю три узла (что правильно)
Но мне нужно получить только последний (last-name). Пытаюсь "уточнить" запрос:
xml:Test.xml:/FictionBook/description/title-info/author/last-name//text()
Получаю пустую панель (хотя ожидается панель с одним элементом). Я наделся, что именно это и называется "скалярным" запросом, НО... Никакого «окна сообщения» не выводится.
  1. Я чего-то не понимаю в работе с XPath? или это - ошибка в плагине?
  2. Как получить значение атрибута узла (в данном случае - #text)?
  3. Есть ли какая-то возможность получать данные (текст узла, лбо значение атрибута узла), используя этот плагин (возможно, поместить значение в клипборд)? В частности, на форуме упоминался синтаксис запроса из командной строки xml:dup:... - где об этом можно прочитать?
  4. Имеется (если нет - планируется ли) вызовы плагина из макросов через Plugin.Call
Last edited by buniak_a_h on Thu 01 Mar, 2018 00:02, edited 2 times in total.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

XML Browser — навигация по XML-файлам

Post by fml2 »

Я не очень знаком с плагином, но немного знаю XPath. Не пробовали двойной слэш перед text() заменить на одинарный? Кроме того, text(), возможно, вообще не нужен, т.к. значением узла (по умолчанию) является его текстовое содержимое.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

XML Browser — навигация по XML-файлам

Post by buniak_a_h »

fml2 wrote: Thu 01 Mar, 2018 00:15Я не очень знаком с плагином, но немного знаю XPath. Не пробовали двойной слэш перед text() заменить на одинарный?
Пробовал. Результат тот же.
fml2 wrote: Thu 01 Mar, 2018 00:15 Кроме того, text(), возможно, вообще не нужен, т.к. значением узла (по умолчанию) является его текстовое содержимое.
Без text() происходит просто переход на узел /FictionBook/description/title-info/author/last-name .
Поясню задачу. Мне надо в макросе получить текст узла для дальнейшей обработки (например, составления каталога книг). Вложенный файл, кстати, на самом желе является урезанным вариантов FB2-файла. Поэтому хотелось бы как можно меньше задействовать "панельные" и редакторные возможности ФАРа . А без text() придётся организовывать поиск элемента (свойства) #text, а для получения значения - заходить в описание (Ctrl+Z), отмечать (Ctrl+A) и брать в буфер. В принципе, возможно. Но геморрой какой-то кажущийся лишним Т.е. у плагина наверняка есть возможность получить текст узла (ну, раз показывает!). Просто я не нашёл (возможно, нету) интерфейса для возвращения этого значения.
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

XML Browser — навигация по XML-файлам

Post by fps »

xml:Test.xml:/FictionBook/description/title-info/author/last-name//text()
Получаю пустую панель (хотя ожидается панель с одним элементом).
xml:Test.xml:/FictionBook/description/title-info/author/last-name
затем
lua:msgbox("",Panel.Item(0,2,11))
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

XML Browser — навигация по XML-файлам

Post by buniak_a_h »

fps wrote: Thu 01 Mar, 2018 11:48xml:Test.xml:/FictionBook/description/title-info/author/last-name
затем
lua:msgbox("",Panel.Item(0,2,11))
Ну, почти... нельзя быть уверенным, что там нет других пропертей; соответственно, надо позиционироваться на #text:


Остальное (Panel.Item(...)) я и так уже нашёл. Просто открытие ПАНЕЛИ плагина тащит за собой сохранение/восстановление предыдущей панели (отметки, положение, видимость...). А теперь представьте, что на панели перед вызовом макроса был установлен фильтр! Сбрасывать, восстанавливать...
Т.е. либо надо открывать панель плагина в новой панели (не знаю, как создать, а затем удалить панель именно как объект), либо получать немаленький геморрой с сохранение/очисткой/восстановлением параметров панели.
Возможно, есть методы типа Panel.SaveStatus/Panel.RestStatus, но я о них не знаю
(кстати, полезные были бы методы...).
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

XML Browser — навигация по XML-файлам

Post by buniak_a_h »

Ещё "особенность" плагина, очень похожая на ошибку:
1.
В командной строке пишем:
xml:Test.xml
В открывшейся панели плагина жмём CtrlJ и вводим XPath-выражение:
/FictionBook/description/title-info/author/last-name
В результате открывается узел /FictionBook/description/title-info/author, в нем - только один подузел last-name (как фильтр).
2.
Делаем, судя по хелпу, аналогичные действия, но "в один клик" (т.е. сразу в командной строке вводим префикс, через ":" имя файла и опять через ":" XPath-выражение):
xml:Test.xml:/FictionBook/description/title-info/author/last-name
Ожидается, естественно, тот же результат, что и при первой последовательности действий. УВЫ! "Захожу" в узел last-name и вижу (в виде файлов) проперти и собственно #text. Т.е. как будто делал то, что в первом случае, но потом спустился в панели до first-name и зашёл в него.
Ну и "родственная" особенность: если в XPath примеров 1. и 2. добавить в конец //text(), то при вводе XPath в диалоге откроется узел first-name с фильтром #text, а при вводе XPath в командной строке откроется ПУСТОЙ узел first-name.
Всё же эта особенность очень смахивает на ошибку...
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

XML Browser — навигация по XML-файлам

Post by fps »

yms wrote: Fri 15 Aug, 2014 11:14 4. Идея насчет JSON и мне приходила в голову, но это, наверно, будет другой плагин. С YAML дела не имел, но всё возможно...
Последнее время всё чаще приходится иметь дело с файлами в формате YAML. Похоже, формат набирает популярность.
Плагин для работы с ним аналогично json и xml был бы очень полезен.
Post Reply

Return to “Обсуждение плагинов”