Я пытаюсь разобрать XML, которые выглядят какjdom2 XPathExpression тянуть узел не в состоянии
<EvaluateHandRequest xmlns="http://www.aaa.com/aaa/schemas">
<card>
<suit>HEARTS</suit>
<face>TEN</face>
</card>
<card>
<suit>SPADES</suit>
<face>KING</face>
</card>
<card>
<suit>HEARTS</suit>
<face>KING</face>
</card>
<card>
<suit>DIAMONDS</suit>
<face>TEN</face>
</card>
<card>
<suit>CLUBS</suit>
<face>TEN</face>
</card>
</EvaluateHandRequest>
И сделать это я использую XPathExpression, но я не могу вытащить результат.
SAXBuilder jdomBuilder = new SAXBuilder();
Document jdomDocument = jdomBuilder.build(xmlSource);
Element element = jdomDocument.getRootElement();
XPathFactory xFactory = XPathFactory.instance();
XPathExpression xExpression = xFactory.compile("/*/*");
List<Element> list = xExpression.evaluate(element);
System.out.println(list.size() + " " + list.get(0).getName());//5 card
for (Element element2 : list) {
System.out.println(element2.getValue()); //proper result
}
Если я использую /*/*
выражение во время компиляции я получаю все платы и им значение, где card
находятся в верхней части иерархии. Но когда я использую /*/card
, я не получаю оттуда какой-либо элемент. И я не могу вытащить результат, если я вообще напишу любое имя какого-либо узла в выражении. Какая у меня проблема?
да, спасибо, я только что видел, как вы предыдущий aswer здесь Http: // stackoverflow.com/questions/24573282/jdom2-with-xpath-doesnt-work-with-namespace – viavad