XPath (SimpleXML) выбор ребенка на основе значения дочернего брата
Я использую SimpleXML (Java) и пытаюсь получить список объектов, основываясь на значении одного из элементов этого списка.
Итак, вот мой XML:
<xml>
<metadata>
<resources>
<resource>
<ittype>Service_Links</ittype>
<links>
<link>
<path>http://www.stackoverflow.com</path>
<description>Stack Overflow</description>
</link>
<link>
<path>http://www.google.com</path>
<description>Google</description>
</link>
</links>
</resource>
<resource>
<ittype>Article_Links</ittype>
<links>
...
</links>
</resource>
...
</resources>
</metadata>
</xml>
Я пытаюсь создать SimpleXML-аннотацию с использованием XPath, чтобы получить список всех"links" где список братьев и сестер"ittype" равняется"Service_Links".
Так, например, это работает, но только если я пытаюсь получить 1-й статически"resource"-узел (в отличие от динамического получения"resource"узел, основанный на том, что это"ittype" является:
@ElementList(name="links")
@Path("metadata/resources[1]/resource")
public List<Link> link;
Я пробовал так много способов отформатировать xpath для динамического поиска"resource"-не хочу, чтобы я не мог перечислить их всех здесь; однако это один пример, который я пробовал, который, как мне кажется, должен работать; Понятия не имею, что я делаю неправильно ...
@ElementList(name="links")
@Path("metadata/resources[resource/ittype='Service_Links']/resource")
public List<Link> link;
Я гуглил тонну, в том числе здесь, на SO, и просто не могу найти много очень похожего; и то, что я нашел, не достаточно хорошо перевело, чтобы я мог определить, что мне нужно делать. Например,это ТАК не похоже, что он работает, хотя это довольно похоже.
UPDATE #1 (8OCT @ 12:38pm)
По отзывам я пробовал это:
@ElementList
@Path("metadata/resources/resource[ittype='Service_Links']")
public List<Link> link;
Нет кости: org.simpleframework.xml.core.PathException: недопустимый индекс для пути «метаданные / ресурсы / ресурс [ittype =» Service_Links & apos;] »; в поле «ссылки»;