2014-02-06 2 views
0

У меня есть xml, где мне нужно применить фильтр для фильтрации nodes. Фактически критерии фильтра отправляются клиентом по запросу xml с использованием XPATH нотация
т.е. ObjectData [VData [@DestCode = BEANR0170100497]]Как фильтровать узлы xml на основе фильтра в xpath

Когда я отвечу клиенту, мне нужно фильтровать и отправлять только выше данные. Могу ли я сделать это с Jaxb или любым другим простым parser? Любой образец будет высоко оценен.

ответ

0

XPath встроен в API по умолчанию, например ...

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
Document doc = dbf.newDocumentBuilder().parse(...); 

XPathFactory xf = XPathFactory.newInstance(); 
XPath xPath = xf.newXPath(); 

String query = ... 
XPathExpression xExp = xPath.compile(query); 
NodeList nl = (NodeList) xExp.evaluate(doc, XPathConstants.NODESET); 
for (int index = 0; index < nl.getLength(); index++) { 
    Node node = nl.item(index); 
    System.out.println(node.getTextContent()); 
} 
+0

Хорошо, Таким образом, я должен вручную создать XML-файл снова правильно? скажем, если мой xml имеет голову и тело, я хочу отфильтровать часть тела. Тем не менее мне нужно вручную подключить фильтрованный узел к телу прямо? Но я думал, как автоматически переместить часть, которую я хочу, и дать мне завершенный xml. (с телом и головой, пространство имен и т. д.) – user2771655

+0

В этом примере будут найдены только совпадающие узлы. Да, вам нужно будет создать новый документ на основе результатов – MadProgrammer

Смежные вопросы