powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрый XPath
16 сообщений из 16, страница 1 из 1
Быстрый XPath
    #39537424
BuryCommoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
На Java только начал писать. Прочитал, что стандартный XPath имеет низкую производительность на глубоких деревьях. Подскажите, есть ли полноценный и быстрый XPath для Java. Наподобие, например, MSXML6 для Windows.

---------------------------------------------------------
is null or not is null
...
Рейтинг: 0 / 0
Быстрый XPath
    #39537750
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лет 15 назад на проекте я-был занят написанием мелкой бизнес-логики для XPath под .Net.
Почти все проблемы производительности XPath решались отказом от него самого.
Мы переписали узкие места кода на XmlReader+XmlWriter (пришлось напрячся чтобы
смоделировать некий конечный автомат для разбора документа). Результатом - довольны.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39537852
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЛет 15 назад на проекте я-был занят написанием мелкой бизнес-логики для XPath под .Net.
Почти все проблемы производительности XPath решались отказом от него самого.
Мы переписали узкие места кода на XmlReader+XmlWriter (пришлось напрячся чтобы
смоделировать некий конечный автомат для разбора документа). Результатом - довольны.

предполагается наверное не универсальный инструмент а заранеее предопределенная неизменная схема xml документа?
...
Рейтинг: 0 / 0
Быстрый XPath
    #39537996
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поскольку мы сами были создателями схемы, то её вопрос изменений не стоял так резко.

Вообще в xml/xpath изначально заложена либеральная модель развития. Вы можете даже
Вводить новые поля в документ при сохранении схемы.

Нюанс будет только в трактовке самого понятия поля и в удобстве его парсинга потом.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39538211
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пользовался jaxen - пример для dom
может бегать не только по DOM

чем меньше использовать выражений типа
Код: plaintext
//
тем будет быстрее
можно держать кеши разпаршеных xpath-ов
...
Рейтинг: 0 / 0
Быстрый XPath
    #39538359
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПоскольку мы сами были создателями схемы, то её вопрос изменений не стоял так резко.

Вообще в xml/xpath изначально заложена либеральная модель развития. Вы можете даже
Вводить новые поля в документ при сохранении схемы.

Нюанс будет только в трактовке самого понятия поля и в удобстве его парсинга потом.

я имеел ввиду при использовании самописного конечного автомата вместо xpath
...
Рейтинг: 0 / 0
Быстрый XPath
    #39538419
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingя имеел ввиду при использовании самописного конечного автомата вместо xpath
Схемы как таковой не было. Тоесть она конечно была но проектирование шло от кода
к схеме. Мы делали функционал ситуативно. По потребностям. Сразу сесть и разработать
схему окончательно - было сложно. Требования возникали в ходе разработки.

Сам автомат парсинга был достаточно прост. По сути он был надстройкой над XmlTextReader
(из ранних библиотек Microsoft.Net 1.1).
...
Рейтинг: 0 / 0
Быстрый XPath
    #39539508
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommonerНа Java только начал писать. Прочитал, что стандартный XPath имеет низкую производительность на глубоких деревьях.

IMHO & AFAIK Не бывает абстрактной низкой или высокой производительности
В лучшем случае, может быть:
a) достаточная производительность для выполнения конкретной бизнес задачи
b) и не достаточная производительность также для конкретной задачи

Если код требуется выполнять раз в сутки, то и минуту подождать можно, если раз в год, то можно и час подождать )))
А вот если 100500 раз в секунду, то тогда, скорее всего, нужно вкладывать бабло в программистов, которые код на Assembler с SSE и прочими оптимизациями перепишут ))) Или купить пару стоек в дата центре и соорудить какой нибудь распределенный супер-мега кластер типа гугловского или амазоновского )))

BuryCommoner...стандартный XPath...
Подскажите, есть ли полноценный и быстрый XPath для Java. Наподобие, например, MSXML6 для Windows.
IMHO За гранью добра и зла
1. "стандартный XPath". Это как "стиральный порошок Tide против обычного стирального порошка". Хотя, скорее, тут "если Вы не видите разницы, то покупайте Досю". Т.к., подозреваю, что 80-90% кода в реализациях XML от различных вендоров полностью совпадают или взято из бесплатных источников (типа xalan/xerses)
2. Я так понимаю M$ XML совершенно для других языков. Т.ч. это обсуждения достоинства вкусов банана vs яблока или мягкого vs теплое. Ну и никто не воспрещает его использовать и с Java (например через связку Java - COM - M$ XML или Java - C - M$ XML), если такая потребность _для_бизнеса_ реально есть, а не выдумана
3. Ну и назвать "быстрым" любую реализацию с DOM, хоть на Java, хоть на C, у меня тоже язык не поворачивается.
пользовался jaxen - пример для dom
может бегать не только по DOM

Мне кажется, что если действительно стоит проблема performance, то DOM сразу же нужно отправлять на помойку. И по производительности, но в первую очередь, по потреблению памяти

Не уверен, но даже XML трансформация умеет через SAX работать (давно с этим сталкивался, т.ч. полной уверенности нет, нужно смотреть документацию по библиотекам)

Если документы могут достигать сотен мегабайт (или нужно обрабатывать сотни тысяч мелких документов), то мне сложно представить продуктовую среду с использованием DOM которая не будет "тормозить" и замусоривать heap (т.е. все равно тормозить, только уже на GC).

IMHO & AFAIK
...
Рейтинг: 0 / 0
Быстрый XPath
    #39540328
BuryCommoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, неконкретно описал про скорость работы. Вот источники:
https://habrahabr.ru/post/128175/
http://www.javenue.info/post/60

maytonЛет 15 назад на проекте я-был занят написанием мелкой бизнес-логики для XPath под .Net.
Почти все проблемы производительности XPath решались отказом от него самого.
Мы переписали узкие места кода на XmlReader+XmlWriter (пришлось напрячся чтобы
смоделировать некий конечный автомат для разбора документа). Результатом - довольны.
Согласен, потихоньку прихожу к тому, что большинство операций лучше будет алгоритмами перебора реализовывать.


Dmitry.пользовался jaxen - пример для dom
может бегать не только по DOM
Спасибо! Посмотрю библиотеку.

Leonid KudryavtsevIMHO & AFAIK
Да, вопрос получился сумбурным и неконкретным. Производительность не критична, просто не хотелось использовать инструмент, который имеет подводные камни (ссылки в начале сообщения). Реализовать задачу на SAX возможно, но не целесообразно. Для этого понадобится много времени. В данный момент логика не до конца стабилизирована, возможны существенные перепроектирования.

В течение пары лет реализовывал утилиту для разбора XSD и основанных на этом генератора кода, документации, преобразования схем. Начиналось всё с php, с простого инструмента для уменьшения рутины. С возрастанием сложности ушёл в VB.NET для повышения скорости. Постепенно часть функциональности попала в производство (шлюзы стали использовать для валидации схем по наборам правил). Сейчас в связи с переходом на Linux попросили портировать движок на Java.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39540361
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BuryCommonerСпасибо! Посмотрю библиотеку.

Спасибо было в плохом смысле. Не надо было рекомендовать эту библиотеку, поскольку устарела. Соответственно,смотреть надо не её, а то, что используется сейчас.

Вообще, в обсуждении этой темы ораторы путаются в методах поиска информации в XML. Правда (которая до некоторых не дошла) состоит в том, что нужны разные. XPath требует создания XML DOM (непосредственно в Java или в вызываемом из Java XSLT-процессоре), отчего работает медленнее и требует большей памяти, чем последовательный просмотр XML файла, который однако годится только для файлов с регулярной структурой из достаточно простых записей.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39541281
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://habrahabr.ru/post/128175/

Жесть какая-то. И сама проблема (бага) жесть (если она конечно существует), но решение еще более "жесткое"

Совет клонировать node перед использованием xpath.... волосы дыбом встают.

"Туда сюда обратно, тебе и мне приятно" ( C ) мурзилка

но на jdk1.8.0_65 поведение такое же.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39541313
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понимаю, они все время вынуждены пересоздавать DTM для всего документа.
Если между вызовами XPath документ не меняется, то можно этого и не делать.

Если использовать org.apache.xpath.XPath или org.apache.xpath.CachedXPathAPI, то вроде такого (тормознутого на нодах) поведения нету. Но нужно внимательно доку читать, я как-то многого про DTM и XPathContext не понял (((

Я с XPath близко не разбирался. Использовать - использовал, но на производительность было глубоко пофиг.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39541341
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Быстрый XPath
    #39541353
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... последний коммит в xalan был сделан 17 лет назад.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39541369
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonХм... последний коммит в xalan был сделан 17 лет назад.
Немного провоцирующая статья. На деле статью тот же чувак написал что зарепортил баг, и он же проблему обнаружил. Там на стаковерфлоу он сообщает что для дефолтового из jdk xml процессора проблема тоже проявляется.
...
Рейтинг: 0 / 0
Быстрый XPath
    #39542070
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming...для дефолтового из jdk xml процессора...
у меня "дефолтный" как раз apache
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрый XPath
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]