XPath (SimpleXML) Auswahl des Kindes basierend auf dem Wert des Geschwisters des Kindes

Ich verwende SimpleXML (Java) und versuche, eine Liste von Objekten zu erhalten, die auf dem Wert eines der Geschwister der Liste basiert.

Also, hier ist mein 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>

Ich versuche eine SimpleXML-Annotation mit XPath zu erstellen, um eine Liste aller zu erhalten"links" wo die Liste ist Geschwister"ittype" gleich"Service_Links".

So funktioniert das zum Beispiel aber nur, wenn ich versuche, den 1. statisch zu bekommen"Ressource"-node (im Gegensatz zum dynamischen Abrufen des"Ressource"-Node basierend auf dem, was es Geschwister ist"ittype" ist:

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

Ich habe so viele Möglichkeiten ausprobiert, den xpath zu formatieren, um den dynamisch zu finden"Ressource"-Node Ich möchte, dass ich unmöglich alle hier auflisten kann. Dies ist jedoch ein Beispiel, das ich ausprobiert habe und das meiner Meinung nach funktionieren sollte. Keine Ahnung, was ich falsch mache ...

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

Ich habe eine Menge gegoogelt, auch hier auf SO, und kann einfach nicht viel Ähnliches finden. und was ich gefunden habe, konnte ich nicht gut genug übersetzen, um zu erkennen, was ich tun muss. Zum Beispiel,das so schien nicht zu funktionieren, obwohl es ziemlich ähnlich ist.


UPDATE # 1 (8OCT @ 12:38 pm)

Per Rückmeldung habe ich folgendes versucht:

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

Keine Würfel: org.simpleframework.xml.core.PathException: Ungültiger Index für Pfad 'Metadaten / Ressourcen / Ressource [ittype =' Service_Links ']' im Feld 'Links'

Antworten auf die Frage(3)

Ihre Antwort auf die Frage