View previous topic :: View next topic |
Author |
Message |
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Fri Feb 25, 2022 20:31 Post subject: |
|
|
little-brother wrote: | лучше использовать XMLReview-плагин |
У него свои ошибки-недоделки есть)) которые не позволяют его использовать. Да и темы-обсуждения тут на форуме у него нет. Некуда писать пожелания)))
Уж лучше мы ваш, мы лучший мир ДОстроим.. а затем!!! будем использовать тока ваш плагин))) |
|
Back to top |
|
|
little-brother
Joined: 29 Sep 2021 Posts: 205
|
(Separately) Posted: Fri Feb 25, 2022 21:06 Post subject: |
|
|
Quote: |
темы-обсуждения тут на форуме у него нет. Некуда писать пожелания)))
|
Да, он оказался мудрее меня!
Судя по вот этой странице плагина, писать можно olegvsk@outlook.com.
Для нетабличных данных этот плагин лучше моего - он быстрее, мощнее и красивее. И если третье теоретически можно исправить, то сделать быстрее у меня не получится - данные в стандартный компонент Windows для отображения дерева добавляются очень медленно. И по фунционалу тоже не догнать. |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Sat Feb 26, 2022 20:57 Post subject: |
|
|
little-brother wrote: | он быстрее, мощнее и красивее. |
и все же не открывает все те файлы, что уже умеет открывать ваш)))
так что я лучше посижу подожду - авось случайно как-нить реализация работы с XPath все же просто появится тут)) |
|
Back to top |
|
|
little-brother
Joined: 29 Sep 2021 Posts: 205
|
(Separately) Posted: Sat Feb 26, 2022 21:14 Post subject: |
|
|
В смысле появится? Она уже есть! |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Sat Feb 26, 2022 21:24 Post subject: |
|
|
Кстати, насчет табличного представления в правой части)))
КАК это смешно не звучит, но опять-таки неплохая часть моих файлов под это определение подойдет с одним лишь отличием. Файлы содержат табличные данные, НО! не имеют первичного корня. Нет первого и единственного тега)) который должен охватывать все строки
Code: |
<Y>a</Y> <-- ROWS: 1/2
<Y>b</Y> <-- ROWS: 2/2 |
Т.е. нет тегов <X></X> вокруг.
В связи с чем плагин-то работает шикарно - он-таки показывает все табличные данные, но не в виде таблицы((( Потому что не хватает этого верхнеуровневого тега <X>.
В связи с чем предложение. Равно как есть в контекстном меню возможность смотреть в данный момент времени на фильтры, или не смотреть на них. Добавить пункт меню "Root tag all contents" - Охватить корневым тегом все содержимое. По его активации в дерево парсинга принудительно вставляется первым тегом <X> а последним тегом вставляется </X>. Ну или какой-то другой красивый тег))
В итоге мы получаем красивое табличное представление, что и задумывалось для таких случаев!
Добавлено спустя 30 минут:
little-brother wrote: | В смысле появится? Она уже есть! |
Даааааа, вас явно окружают нимфы и музы программирования)))
НО есть нюанс. XPath есть и для тегов и для атрибутов тегов))
Code: | <bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore> |
чтобы достать атрибут lang для первой книги я пишу:
/book[1]/title/@lang
А у вас сейчас есть возможность получить XPath ТОЛЬКО для узла - для тега title! Хотя и для значения тоже должна существовать возможность скопировать XPath В нашем случае это будет: /book[1]/title/text()
ну что - фиксим? |
|
Back to top |
|
|
little-brother
Joined: 29 Sep 2021 Posts: 205
|
(Separately) Posted: Sat Feb 26, 2022 21:54 Post subject: |
|
|
С этим есть проблема: допустим XML имеет вид
Code: |
<X>
123
<y>aaa</y>
<y>bbb</y>
<z>ccc</z>
</X> |
Строки с тегом y вроде как можно отобразить таблично, а вот текстовый узел 123 и z выбиваются из этого. Сейчас плагин проверяет, что все дочерние узлы X имеют одинаковый тег, и, если все ок, то показывается таблица (TABLE), иначе показывается содержимое узла по аттрибутам (SINGLE).
Насколько я понимаю вы предлагаете добавить настройку, чтобы можно было игнорировать 123 и ccc, Однако, что делать если y-узлов столько же сколько и z? А могут же быть еще другие.
Можно конечно добавить в дереве выпадающее меню ignore/hide для узла, т.е. получив подобный XML, вам нужно будет выставить руками ignore для 123 и z-узла, после чего данные будут выведены как таблица. Однако, если X-имеет достаточно много узлов и например 10-20 неподходящих, то выставление ignore уже может стать утомительным, да и не очевидно это как то работать будет.
Хотя можно добавить для узла в выпадающем меню "Показать только такие же" и соответственно для X отфильтровать только узлы с тегом текущего. |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Sat Feb 26, 2022 22:33 Post subject: |
|
|
little-brother wrote: | Насколько я понимаю вы предлагаете добавить настройку, чтобы можно было игнорировать 123 и ccc, Однако, что делать если y-узлов столько же сколько и z? А могут же быть еще другие. |
нет - нет! никаких доп.игнорирований!
именно просто жесткое добавление Охватывающего тега Х вокруг всего и вся.
Как говорится - под присмотром пользователя и под его ответственность.
Запоминать даже положение этой опции не надо.
На каждое открытие XML - она не активна, и лишь если я выбрал ее - то охватывающий тег принудительно добавляется в дерево парсинга.
Добавлено спустя 4 минуты:
И кстати, я сейчас проверил поведение при добавленном субтеге, отличающемся от остальных - аналог вашего Z, при массовом наличии тегов Y...
А и ничего - нормально и верно плагин все отобразил в табличном виде))) И все Y и потом этот Z. Всё красиво!!!
Добавлено спустя 2 минуты:
little-brother wrote: | Хотя можно добавить для узла в выпадающем меню "Показать только такие же" и соответственно для X отфильтровать только узлы с тегом текущего. |
кстати - ОООЧЕНЬ прикольная опция. Совсем о таком даже не подумалось в первой. Но сейчас - даже очень интересной кажется))) |
|
Back to top |
|
|
little-brother
Joined: 29 Sep 2021 Posts: 205
|
(Separately) Posted: Sat Feb 26, 2022 23:14 Post subject: |
|
|
А как может быть XML без корневого тега то?
Это же полностью невалидная конструкция. Хотя чего это я спрашиваю
Quote: | вас явно окружают нимфы и музы программирования)) |
Это просто у кого то слишком много свободного времени и пора искать работу. Хотя с текущим положением дел, когда Сбер и Яндекс просели и могут начать увольнять погроммистов, рынок может и просесть |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Sun Feb 27, 2022 11:35 Post subject: |
|
|
little-brother wrote: | Это же полностью невалидная конструкция. |
только в рамках конкретно одного взятого файла.
НО т.к. его использование идет в другом файле, куда его содержимое включается, то в ИТОГЕ весь xml представлен валидно. С корневыми тегами.
Но я-то файлы просматриваю напрямую - БЕЗ этого использования... Мне эта опция весьма нужна. Чтобы имитировать это включение/обхват. |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Mon Feb 28, 2022 16:45 Post subject: |
|
|
Но про охватывающий тег - я даже склонен думать, что делать это (ваша миссия, если вы возьметесь за её выполнение, мистер Хант),
можно и на потом отложить. Более главное дело - это подправить XPath для атрибутов узлов и их значений.
чтоб работали/копировались:
/book[1]/title/@lang
и
/book[1]/title/text()
для, к примеру,
Code: | <bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore> |
|
|
Back to top |
|
|
little-brother
Joined: 29 Sep 2021 Posts: 205
|
(Separately) Posted: Tue Mar 01, 2022 12:22 Post subject: |
|
|
Это строчек 10 кода.
А вот с XPath проблема есть: строки в таблице и дерево сейчас в плагине никак не связаны, т.е. сказать что отображает текущая строка, чтобы получить XML-узел, а по нему XPath, уже нельзя. Думаю, что можно сделать. |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Tue Mar 01, 2022 12:38 Post subject: |
|
|
little-brother wrote: | строки в таблице и дерево сейчас в плагине никак не связаны, т.е. сказать что отображает текущая строка, чтобы получить XML-узел, а по нему XPath, уже нельзя |
а разве у узла нет поля UserDATA, ну или как там оно может звучать?
Чтобы заносить свою инфу, кроме того, что узел должен отобразить как текстовую видимую информацию.
И тогда записывать в это поле текущий XPath этого узла на моменте генерации самого дерева. И тогда когда надо его скопировать - то просто get_UserData для выбранного узла и все. И это сработает для ситуации, когда мы по факту фокусом на таблице висим. Просто у дерева спросить текущий выделенный узел, а у него опять просто get_UserData. |
|
Back to top |
|
|
little-brother
Joined: 29 Sep 2021 Posts: 205
|
(Separately) Posted: Tue Mar 01, 2022 12:57 Post subject: |
|
|
У дерева есть, он используется - там хранится ссылка на привязанный XML-узел. А вот у строк таблицы уже нет. Так как используется виртуальный режим отображения (для скорости), то реальных строк нет следовательно Userdata для каждой из них.
Ссылка на XML-узел в данном случае нужна именно для строки, т.к. два вида отображения - как содержимое узла SINGLE (тут можно взять и из текущего узла дерева), и список дочерних узлов TABLE (тут уже желательно иметь ссылку). Пробовал брать узел из дерева и отсчитывать по строкам для него, но это все криво, т.к. строки могут быть пересортированы и отфильтрованы. Так что думаю как сделать. |
|
Back to top |
|
|
Destiny
Joined: 15 Dec 2015 Posts: 215
|
(Separately) Posted: Tue Mar 01, 2022 13:19 Post subject: |
|
|
Я может что совсем не понимаю, но разве не всё очень просто)))
тогда просто не бить меня, просьба... а вот мысля моя такова:
Когда выделен узел в дереве (как сейчас на скрине) - то XPath вроде как уже работает и дает верную строку.
/LIST_OF_PERSONS/DATA[1]/PASSPORT/SERIJA
А когда я тапну на элемент в таблице - то по идее к существующему пути, который уже есть для выделенного узла дерева, надо добавить текст из таблицы по логике:
если начинается на @ - то добавить как есть:
/LIST_OF_PERSONS/DATA[1]/PASSPORT/SERIJA/@lang
если начинается на # - то добавить фиксированную строку:
/LIST_OF_PERSONS/DATA[1]/PASSPORT/SERIJA/text()
и как бы вроде всё... |
|
Back to top |
|
|
little-brother
Joined: 29 Sep 2021 Posts: 205
|
(Separately) Posted: Tue Mar 01, 2022 14:30 Post subject: |
|
|
Почти верно, но это режим SINGLE, отображение содержимого тега (его атрибутов и значений прямых потомков), т.е. когда по текущему узлу в дереве можно получить ссылку на XML-узел.
Проблема, когда отображается не содержимое узла, а список прямых потомков, как таблица (режим TABLE). Сейчас связи между потомком и представляющей его строкой - нет. Вот думаю как увязать, чтобы не слишком путано было.
Update #1: В общем и целом сделялъ. Осталось баги выловить.
Update #2: Вот альфа - https://disk.yandex.ru/d/Yt8pwJKmkh6SYA
Добавлено:
* XPath для строк таблицы
* Автоматическое добавление корня документа, если его нет
* Отображение соседних элементов имеющий тег, как у текущего в дереве. Т.е. если были теги x, x, x, z, x, то будут отобраны только x и показаны в таблице с 4-мя строками.
С XPath вроде все.
Текстовый узел всегда имеет /text() (без указания номера), CDATA и комментарии кривые, но мне пока лень.
Будет еще доработка по работе с ссылками в ячейках.
Last edited by little-brother on Tue Mar 01, 2022 22:29; edited 3 times in total |
|
Back to top |
|
|
|
|
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
|