Фильтр Xpath в Java возвращает только первое значение результата - PullRequest
0 голосов
/ 11 декабря 2018

Я новичок здесь, и если коротко, у меня есть эта проблема.Я хочу получить все значения потомков, которые имеют атрибут "@ name = 'Priority" в виде списка, и я выделю это:

    XPathExpression expr = xpath.compile ("//*[@name='Priority']");
        NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
         System.out.println("Found " + nl.getLength() );
            for(int i = 0; i < nl.getLength(); i++) {
                System.out.println("Priority:" + xpath.compile("//*[@name='Priority']").evaluate(nl.item(i)));
                System.out.println("==================");
            }

моя структура XML здесь

  <INSTANCE id="obj.43200" class="Car" name="Car-43200">
        <ATTRIBUTE name="Position" type="STRING">NODE x:15.5cm y:7cm w:1.5cm h:1cm index:69</ATTRIBUTE>
        <ATTRIBUTE name="External tool coupling" type="STRING" />
        <ATTRIBUTE name="Direction" type="ENUMERATION">Horizontal</ATTRIBUTE>
        <ATTRIBUTE name="Priority" type="INTEGER">40</ATTRIBUTE>
     </INSTANCE>

но когда я выполняю Java-код в eclips, я получаю это:

    Found 9
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================
Priority:40
==================

, он приносит мне только первый результат в качестве конечного результата для всех остальных результатов фильтра 8 XPath. Это должно быть так для exmp:

     Found 2
Priority:40
==================
Priority:5

и так далее ...

Что я могу сделать? Заранее спасибо:)

1 Ответ

0 голосов
/ 11 декабря 2018

на основе заданного содержимого xml и кода java, выведите следующее:

Found 1
Priority:40
==================

Я понятия не имею о вашем содержимом xml.пожалуйста попробуйте с этим

XPathExpression expr = xpath.compile ("//*[@name='Priority']");
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
System.out.println("Found " + nl.getLength() );
for(int i = 0; i < nl.getLength(); i++) {
    System.out.println("Priority:" + nl.item(i).getTextContent());
    System.out.println("==================");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...