Selección de XPath (SimpleXML) del niño según el valor del hermano del niño

Estoy usando SimpleXML (Java) y estoy tratando de obtener una lista de objetos basada en el valor de uno de los hermanos de la lista.

Entonces, aquí está mi 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>

Lo que estoy tratando de hacer es crear una anotación SimpleXML usando XPath para obtener una lista de todos los"campo de golf" donde el hermano de la lista"ittype" es igual a"Service_Links".

Entonces, por ejemplo, esto funciona, pero solo si estoy tratando de obtener estáticamente la primera"recurso"-nodo (a diferencia de obtener dinámicamente el"recurso"-nodo basado en lo que es hermano"ittype" es:

@ElementList(name="links")
@Path("metadata/resources[1]/resource")
public List<Link> link;

He intentado tantas maneras de formatear el xpath para encontrar dinámicamente el"recurso"-nodo quiero que no pueda enumerarlos todos aquí; sin embargo, este es un ejemplo que he probado que me parece que debería funcionar; no tengo idea de lo que estoy haciendo mal ...

@ElementList(name="links")
@Path("metadata/resources[resource/ittype='Service_Links']/resource")
public List<Link> link;

He buscado en Google una tonelada, incluso aquí en SO, y simplemente no puedo encontrar mucho muy similar; y lo que encontré, no se tradujo lo suficientemente bien como para que pudiera detectar lo que tenía que hacer. Por ejemplo,este SO No parece funcionar a pesar de que es bastante similar.


ACTUALIZACIÓN # 1 (8OCT @ 12:38 pm)

Por retroalimentación, he intentado esto:

@ElementList
@Path("metadata/resources/resource[ittype='Service_Links']")
public List<Link> link;

No dice: org.simpleframework.xml.core.PathException: índice no válido para la ruta 'metadata / resources / resource [ittype =' Service_Links ']' en el campo 'links'

Respuestas a la pregunta(3)

Su respuesta a la pregunta