targetjump
@targetjump

Как подружить XPath и кастомное XML дерево?

Есть кастомный xml парсер. В результате парсинга получаеться дерево, все ноды дерева лежат вListMultimap<String, Node>, где ключ это путь к ноде, например, "/project/dependencies/dependency".
Дерево предоставляет возможность делать 2 типа запросов:

1. Сходить за текстовым контентом конкретной ноды

String artifactId = xmlTree.selectText("/project/artifactId");


2. Сходить за листом нод

List<Node> dependencies = xmlTree.selectNodes("/project/dependencies/dependency");


Теперь нужно уметь выбирать ноды по конкретным условиям, например:

List<Node> testDeps = tree.selectNodes("/project/dependencies/dependency[scope=test]");


Можно было бы заняться своим велосипедом но сроки поджимают!
Я пока придумал только 2 варианта:

1. Реализовать com.w3c.dom по минимуму и делегировать существующим деревом (но не уверен успею ли)
2. Парсить файл еще раз другим парсером и
мапить все результаты xpath запросов в ноды "нашего" дерева.

btw если у Вас есть вопрос почему просто не юзать парсер для xml -> потому что очень важно не ламать форматинг и существующую структуру файла при апдейтах, сдесь 90% парсеров сразу не подходят, а остальные 10% не подходят по лицензии.
  • Вопрос задан
  • 2271 просмотр
Решения вопроса 1
targetjump
@targetjump Автор вопроса
Решил через Node#setUserData + делегирование нодой с коробки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы