我是XPath和xml解析的新手。我閱讀了一些文檔,但找不到解決我的問題的方法。我的.xml看起來像這樣(FYI:它的「iTunes音樂Library.xml」的播放列表部分):Tricky xpath查詢
<dict>
<array>
<dict>
<key>Name</key><string>Playlist 1</string>
<key>Playlist ID</key><integer>187826</integer>
<key>Playlist Persistent ID</key><string>04250E0617138909</string>
<key>All Items</key><true/>
<key>Playlist Items</key>
<array>
<dict>
<key>Track ID</key><integer>11111</integer>
</dict>
<dict>
<key>Track ID</key><integer>22222</integer>
</dict>
</array
</dict>
<dict>
<key>Name</key><string>Playlist 2</string>
<key>Playlist ID</key><integer>187826</integer>
<key>Playlist Persistent ID</key><string>04250E0617138909</string>
<key>All Items</key><true/>
<key>Playlist Items</key>
<array>
<dict>
<key>Track ID</key><integer>23456</integer>
</dict>
<dict>
<key>Track ID</key><integer>34567</integer>
</dict>
</array
</dict>
</dict>
我的輸入是包含播放列表的名稱的字符串。現在,這是我想要的輸出內容:與特定播放列表相關的所有歌曲ID。不幸的是,該名稱不是例如數組或第一個字典的屬性。這是我得到的(java代碼):
ap.selectXPath("//dict/array/dict/string[1][text()=\"" + playlistName + "\"]");
這只是給我我的playlistName當然。那麼如何從現在開始呢?這次來到我的腦海裏:解析這樣的文件,直到解析器到達期望的名稱:以「詮釋計數」
ap.selectXPath("//dict/array/dict[" + count++ +"]/string[1]");
。然後從適當的查詢中再次從該位置開始。然而,這似乎並不優雅或高效。
長話短說:是否有XPath查詢來滿足我的要求?
感謝您的快速響應。這沒有竅門:) – hollandThomas