私は SimpleXML (Java) を使用しており、リストの兄弟の 1 つの値に基づいてオブジェクトのリストを取得しようとしています。
だから、ここに私の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>
私がやろうとしているのは、リストの兄弟"ittype"が"Service_Links"に等しいすべての"リンク"のリストを取得するために、XPath を使用して SimpleXML 注釈を作成することです。
したがって、たとえば、これは機能しますが、最初の「リソース」ノードを静的に取得しようとしている場合のみです(兄弟の「ittype」に基づいて「リソース」ノードを動的に取得するのではなく:
@ElementList(name="links")
@Path("metadata/resources[1]/resource")
public List<Link> link;
「リソース」ノードを動的に見つけるために xpath をフォーマットする方法をたくさん試しましたが、ここにすべてをリストすることはできませんでした。ただし、これは私が試した1つの例であり、うまくいくはずです。私が間違っていることはわかりません...
@ElementList(name="links")
@Path("metadata/resources[resource/ittype='Service_Links']/resource")
public List<Link> link;
私はここSOを含め、たくさんのことをグーグルで検索しましたが、非常によく似たものを見つけることができません。そして、私が見つけたものは、私が何をする必要があるかを見つけるのに十分に翻訳されていませんでした. たとえば、この SOはかなり似ていますが、機能していないようです。
更新 #1 (10 月 8 日 @ 午後 12 時 38 分)
フィードバックごとに、私はこれを試しました:
@ElementList
@Path("metadata/resources/resource[ittype='Service_Links']")
public List<Link> link;
サイコロなし: org.simpleframework.xml.core.PathException: フィールド 'links' のパス 'metadata/resources/resource[ittype='Service_Links']' の無効なインデックス