0
我想解析一个包含有关iTunes播放列表的信息的XML文件。我已成功设法解析有关播放列表名称和ID的信息,但我无法获取播放列表中的歌曲,因为for循环会遍历每个播放列表中的所有歌曲,然后将它们全部显示出来。我希望每个播放列表都有所不同。解析XML XPath - for循环访问所有元素而不是仅用于特定标记的元素
NodeList tList = (NodeList) x.evaluate("/plist/dict/array/dict/array/dict", root, XPathConstants.NODESET);
for (int j = 0; j < tList.getLength(); ++j) {
Element track = (Element) tList.item(j);
Double trackId = (Double) x.evaluate("key[.='Track ID']/following-sibling::integer[1]", track,
XPathConstants.NUMBER);
tracks.add(trackId);
p.setTracks(tracks);
}
Playlist play = new Playlist(name, persistentID, playlistId, tracks);
System.out.println(p.toString());
}
输出:
Playlist [name=Music, persistentId=29E12A03204E072C, playlistId=2687.0, tracks=[1234.0, 1282.0, 1694.0, 1558.0, 1802.0, 1280.0, 1278.0, 1656.0, 1298.0, 1334.0, 1294.0, 398.0, 400.0, 402.0, 404.0, 406.0, 408.0, 412.0, 414.0, 416.0, 418.0, 422.0, 424.0, 426.0, 430.0...]
Playlist [name=Purchased, persistentId=29E12A03204E072C, playlistId=2687.0, tracks=[1234.0, 1282.0, 1694.0, 1558.0, 1802.0, 1280.0, 1278.0, 1656.0, 1298.0, 1334.0, 1294.0, 398.0, 400.0, 402.0, 404.0, 406.0, 408.0, 412.0, 414.0, 416.0, 418.0, 422.0, 424.0, 426.0, 430.0....]
我想道ID的每首歌曲是相对于它的特定的播放列表,但是我不知道如何实现这一目标。谁能帮忙?
第一个''标签永远不会关闭。应该在第二个播放列表显示之前关闭它还是应该围绕整个事物? –
ParkerHalo
是,在文件中关闭。该文件长30000行,所以当我发布时,我不小心遗漏了标签。我现在编辑它。 – ariella123
如前所述,将'NodeList tList =(NodeList)x.evaluate(“/ plist/dict/array/dict/array/dict”,root,XPathConstants.NODESET);'NodeList tList =(NodeList)x。评估(“数组/字典”,字典,XPathConstants.NODESET);',以评估相对于早先选择的'dict'元素。 –