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

Здесь можно обсудить ваш любимый плагин.
User avatar
Dworkin
Posts: 4
Joined: Wed 30 Aug, 2017 11:01

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

Post by Dworkin »

Latest post of the previous page:

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

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

Post by HaRT »

Dworkin wrote: Thu 31 Aug, 2017 08:39что такой за хитрая комбинация?
Обычный вход в папку/архив. Вы бы хоть базовую документацию по Фару изучили что ли. (В том моём сообщении ‘/’ означает «или», если что.)
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 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: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 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: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 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: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 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 был бы очень полезен.
EGez
Posts: 145
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 2 times

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

Post by EGez »

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

yms, очень не хватает возможности работать с большими файлами. Уже от 0.8-1.2ГБ не открываются, 16ГБ уже не хватает... :(
lvmm
Posts: 119
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 8 times
Been thanked: 3 times

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

Post by lvmm »

Плагин зачем-то собирает описание высокоуровневого объекта со всех вложенных в него, те в такой структуре

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<archimate:model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:archimate="http://www.archimatetool.com/archimate" name="eCommerce" id="id-3795e4ca22f34fb79960d1ab2ca74633" version="4.9.0">
  <folder name="Application" id="id-f0d20b14d2184dfb93776c00a7f15fb4" type="application">
    <element xsi:type="archimate:ApplicationComponent" name="CRM" id="id-1046ca320e6c4d1a8e6b02e09b3c5f31">
      <documentation>описание</documentation>
    </element>
"описание" показывается в правой колонке не только для CRM, к которому оно относится, но и для его предков - Application и eCommerce (название файла). Это лечится?

И я правильно понимаю, что он уже не поддерживается?
Last edited by lvmm on Thu 25 Nov, 2021 11:13, edited 1 time in total.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

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

Post by Wave »

Начиная, говорят, с 5711, плагин вылетает при попытке сохранить его настройки.
Пользуюсь ФАРом больше 20 лет © собирательный.
Post Reply

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