Я здесь новичок, и, короче, у меня есть эта проблема. Я хочу получить все значения Child, которые имеют атрибут "@ 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
и так далее...
Что я мог сделать? Заранее спасибо :)




на основе заданного 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("================= = ");
}
Я не могу проверить это прямо сейчас, но мне нравится логика, я попробую позже, спасибо;)