Я правильно понимаю, что ты написал свой велосипед вместо того, чтоб грамотно заюзать питон и lxml, и теперь нам предлагаешь его тестировать? Вопрос - зачем оно, если есть питон и lxml?
Даже если я щас как афтор напишу, что «знаю, что такое XPath», всё равно будут чем-нибудь недовольны, так что пусть пишут что хотят, не надо людям мешать самовыражаться.
Вопрос «что не так с XPath» требует уточнения - какое положение вещей понимается под «так»? :) Чтобы ответить на вопрос, «что не так», нужно сначала понять «так» - это как?
У меня есть пример из собственной практики. В одном своем проекте я создал решение на основе стандартного однопроходного парсера .NET и монад. На основе идеи о парсер-комбинаторах. Получилось очень просто, удобно и гибко. Для своих задач. Очень доволен результатом. XPath там бы не подошел.
Казалось бы такая простая вещь XML, однако существует много разных способов обработки. Наверное, не с проста?
Казалось бы такая простая вещь XML, однако существует много
разных способов обработки.
Сколько? Да, для тех задач, где XPath действительно не справляется, ещё есть XQuery. Что ещё? Кстати, большинство реализаций позволяют расширять XPath собственными функциями.
Начнем с парсеров. Есть, как минимум, три известных мне мейнстримных способа прочитать XML:
потоковый SAX (в Java, например); // и да, очень удачная латинская транскрипция :)
прочитать все в память и построить DOM или s-выражение (в Java, .NET);
легкий потоковый XmlReader (в .NET).
Мое решение было построить парсер-комбинаторы на основе последнего. Там XPath не нужен. Если я правильно понимаю, XPath скорее связан с DOM.
Можно, конечно, ограничить вопрос, а является ли XPath универсальным решением для обработки DOM? Думаю, что тоже нет. Потому как в некоторых случаях мне гораздо приятнее и проще использовать [активный] паттерн-матчинг и комбинаторы из scala.xml. Кстати, там есть некоторые общие точки соприкосновения с XPath, но только некоторые. Например, оператор «\» для быстрой навигации по дереву узлов и атрибутов.
И я рад, что находятся люди, которые готовы изобретать собственные велосипеды, невзирая на XPath. Другой вопрос, насколько хороши эти велосипеды?
Поделие прописывается в XDG-автостарт, маскируясь под компонент GNOME. Коннектится на IRC-сервер и ждёт оттуда команд. Попутно пытается (не слишком удачно) применить ядерный эксплойт двухлетней давности.