У меня есть простой пример xml file:
<?xml version="1.0" ?>
<testCars>
<cars id="0">
<color id="0">Black</color>
<color id="1">Orange</color>
</cars>
<cars id="1">
<color id="0">Blue</color>
<color id="1">Grey</color>
</cars>
<cars>
<color id="0>">Red</color>
<color id="1>">Green</color>
</cars>
</testCars>
Сначала я использую DocumentBuilder для анализа этого файла, а затем я использую xpath, чтобы получить то, что я хочу. Я использовал бы выражение и xpath, чтобы получить цвет 0 автомобиля 1:
String expression = String.format("/testCars/cars[@id=\"%s\"]/color[@id=\"%s\"]",1,0);
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(doc, XPathConstants.NODESET);
System.out.println(nodeList.item(0).getTextContent());
И я получил Синий, как и должен. Но допустим, я хочу, чтобы цвет 0 карты был без идентификатора, он должен быть красным.
Поэтому я изменил выражение на
String expression = String.format("/testCars/cars/color[@id=\"%s\"]",0);
Но теперь результат черный. Это просто берет первый узел, хотя я хочу, чтобы он взял тот без каких-либо атрибутов на нем.
Есть ли у Xpath какая-то конкретная c команда для явного выбора узлов без атрибута? Или мне нужно восстановить xml файл?
Thx.