Хороший бесплатный исходный код Java XPath Evaluator - возможно, JXPath? - PullRequest
0 голосов
/ 06 октября 2011

Имеется ли хороший бесплатный исходный код оценщика XPath?

У нас есть древовидная структура данных, которая не слишком отличается от XML. Однако было бы здорово включить что-то похожее на оценщик XPath (облегченный) для навигации по структуре.

Было бы здорово использовать выражения XPath, такие как:

\ Node1 * \ Child20 * \ Node1 1 сумма (\ Node1 * \ значение)

и т. Д. И т. Д. *

Я думаю, что потребуется время, чтобы реализовать решение самостоятельно, но, к сожалению, у нас очень сжатые сроки. Нам понадобится исходный код, чтобы мы могли пройти через нашу структуру на основе токенизированной строки.

Я не ищу библиотеки XPath как таковые, просто код для оценки выражений стиля XPath.

Я хочу иметь возможность интерпретировать выражения на основе XPath и обрабатывать нашу собственную внутреннюю структуру данных - нашу собственную реализацию объектной модели.

Я встречал JXPath в своих путешествиях, но никогда не использовал его, но мне кажется, что я мог бы это использовать. Кто-нибудь когда-либо использовал это?

Спасибо

Andez

Ответы [ 5 ]

1 голос
/ 06 октября 2011

В Apache Xalan вы найдете полную реализацию XPath с открытым исходным кодом на Java.

1 голос
/ 06 октября 2011

HTML Cleaner довольно хорошо, я всегда использую эту библиотеку для парсера Xpath. Вы можете попробовать: http://htmlcleaner.sourceforge.net/

0 голосов
/ 22 октября 2011

JXPath должно быть хорошо для этого.Но вам, вероятно, придется интегрировать ее с вашей структурой данных, как описано в http://commons.apache.org/jxpath/users-guide.html#Custom_Pointers_and_Iterators.

. Я недавно сделал похожую вещь, и она работала тихо и хорошо.Документация немного слабовата, но, глядя на нее, существующие реализации, такие как DomNodePointer / Dom *** Iterator, должны очень помочь с вашей реализацией.

Для полноты Jaxen допускает аналогичный подход.Но по причинам лицензирования я не мог использовать его сам.

0 голосов
/ 06 октября 2011

Движок Saxon XPath будет работать с любой структурой входных данных, если вы напишите адаптер для вашей структуры данных для реализации интерфейса Saxon NodeInfo.Этот подход кажется гораздо более чистым, чем изменение исходного кода процессора XPath, который вам придется поддерживать навсегда.

0 голосов
/ 06 октября 2011

Java имеет встроенную поддержку XPath.

Следующий код извлекает значение выражения xpath:

String xml = ".... your xml goes here ...";
String expression = "... your XPath goes here ...";
DocumentBuilderFactory xmlFact = DocumentBuilderFactory.newInstance();
xmlFact.setNamespaceAware(true);
DocumentBuilder builder = xmlFact.newDocumentBuilder();
InputSource inputSource = new InputSource(new StringReader(xml));
Document doc = builder.parse(inputSource);
XPath xpath = XPathFactory.newInstance().newXPath();
String value = (String) xpath.evaluate(expression, doc, XPathConstants.STRING);
...