Wybór XPath (SimpleXML) dziecka na podstawie wartości rodzeństwa dziecka
Używam SimpleXML (Java) i próbuję uzyskać listę obiektów na podstawie wartości jednego z rodzeństwa listy.
Oto mój 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>
Próbuję utworzyć adnotację SimpleXML za pomocą XPath, aby uzyskać listę wszystkich"spinki do mankietów" gdzie rodzeństwo na liście„typ” równa się„Service_Links”.
Tak więc, na przykład, działa, ale tylko jeśli staram się uzyskać statycznie pierwszą"ratunek"-node (w przeciwieństwie do dynamicznego pobierania"ratunek"-node na podstawie tego, co jest rodzeństwem„typ” jest:
@ElementList(name="links")
@Path("metadata/resources[1]/resource")
public List<Link> link;
Próbowałem tak wielu sposobów formatowania ścieżki, aby dynamicznie znaleźć"ratunek"-node Chcę, abym nie mógł ich tutaj wszystkich wymienić; jednak jest to jeden z przykładów, który próbowałem, wydaje mi się, że powinien działać; nie ma pojęcia, co robię źle ...
@ElementList(name="links")
@Path("metadata/resources[resource/ittype='Service_Links']/resource")
public List<Link> link;
Wyszukałem tonę, włączając tutaj na SO, i po prostu nie mogę znaleźć bardzo podobnego; a to, co znalazłem, nie tłumaczyło się wystarczająco dobrze, abym zauważył, co muszę zrobić. Na przykład,to więc nie działało, mimo że jest całkiem podobne.
AKTUALIZACJA # 1 (8OCT @ 12:38 pm)
Na opinię próbowałem tego:
@ElementList
@Path("metadata/resources/resource[ittype='Service_Links']")
public List<Link> link;
Brak kości: org.simpleframework.xml.core.PathException: niepoprawny indeks ścieżki 'metadata / resources / resource [ittype =' Service_Links ']' w polu „links”