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

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

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

Post by NightRoman » Fri 09 Dec, 2016 20:46

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: 8429
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 73 times
Been thanked: 131 times

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

Post by HaRT » Fri 09 Dec, 2016 21:11

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 » Wed 30 Aug, 2017 11:41

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

Что делается не так?

User avatar
HaRT
Moderator
Posts: 8429
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 73 times
Been thanked: 131 times

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

Post by HaRT » Wed 30 Aug, 2017 12:50

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 » Wed 30 Aug, 2017 22:27

* 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: 5485
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 71 times
Contact:

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

Post by zg » Wed 30 Aug, 2017 22:54

а если добавить любой анси плагин?

User avatar
HaRT
Moderator
Posts: 8429
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 73 times
Been thanked: 131 times

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

Post by HaRT » Wed 30 Aug, 2017 23:00

Dworkin wrote:
Wed 30 Aug, 2017 22:27
x64
В 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 » Thu 31 Aug, 2017 08:39

HaRT wrote:
Wed 30 Aug, 2017 23:00
Однако при входе в файл по Enter/CtrlPgDn ошибка не возникает (workaround!).
А можно подробнее, что такой за хитрая комбинация?

User avatar
HaRT
Moderator
Posts: 8429
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 73 times
Been thanked: 131 times

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

Post by HaRT » Thu 31 Aug, 2017 11:13

Dworkin wrote:
Thu 31 Aug, 2017 08:39
что такой за хитрая комбинация?
Обычный вход в папку/архив. Вы бы хоть базовую документацию по Фару изучили что ли. (В том моём сообщении ‘/’ означает «или», если что.)
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 517
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 55 times
Been thanked: 9 times
Contact:

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

Post by buniak_a_h » Wed 28 Feb, 2018 23:55

Помогите пожалуйста.
Файл для илюстрации проблем:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <FictionBook>
  3.  <description>
  4.   <title-info>
  5.    <author>
  6.     <first-name>Андрей</first-name>
  7.     <middle-name>Олегович</middle-name>
  8.     <last-name>Белянин</last-name>
  9.    </author>
  10.    <book-title>Ржавый меч царя Гороха</book-title>
  11.   </title-info>
  12.  </description>
  13. </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: 513
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 1 time
Been thanked: 6 times

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

Post by fml2 » Thu 01 Mar, 2018 00:15

Я не очень знаком с плагином, но немного знаю XPath. Не пробовали двойной слэш перед text() заменить на одинарный? Кроме того, text(), возможно, вообще не нужен, т.к. значением узла (по умолчанию) является его текстовое содержимое.

buniak_a_h
Posts: 517
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 55 times
Been thanked: 9 times
Contact:

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

Post by buniak_a_h » Thu 01 Mar, 2018 00:35

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: 195
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 14 times
Been thanked: 4 times

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

Post by fps » Thu 01 Mar, 2018 11:48

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))

buniak_a_h
Posts: 517
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 55 times
Been thanked: 9 times
Contact:

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

Post by buniak_a_h » Thu 01 Mar, 2018 12:20

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


Остальное (Panel.Item(...)) я и так уже нашёл. Просто открытие ПАНЕЛИ плагина тащит за собой сохранение/восстановление предыдущей панели (отметки, положение, видимость...). А теперь представьте, что на панели перед вызовом макроса был установлен фильтр! Сбрасывать, восстанавливать...
Т.е. либо надо открывать панель плагина в новой панели (не знаю, как создать, а затем удалить панель именно как объект), либо получать немаленький геморрой с сохранение/очисткой/восстановлением параметров панели.
Возможно, есть методы типа Panel.SaveStatus/Panel.RestStatus, но я о них не знаю
(кстати, полезные были бы методы...).

buniak_a_h
Posts: 517
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 55 times
Been thanked: 9 times
Contact:

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

Post by buniak_a_h » Thu 01 Mar, 2018 16:12

Ещё "особенность" плагина, очень похожая на ошибку:
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.
Всё же эта особенность очень смахивает на ошибку...

Post Reply

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