我有一个XML文件,其中包含多个具有相同标记的节点。findvalue()
返回所有串联的值。只返回一个值的好方法是什么?
示例:
my $playlists = "<playlists>
<dict>
<key>Name</key><string>Yes - Tales From Topographic Oceans</string>
<key>Description</key><string>Live album</string>
<key>Playlist ID</key><integer>67312</integer>
<key>Playlist Persistent ID</key><string>F28F195257143396</string>
<key>All Items</key><true/>
<key>Playlist Items</key>
</dict>
</playlists>";
my $dom = XML::LibXML->load_xml(string => $playlists);
foreach my $playlist ($dom->findnodes('/playlists/dict')){
say "Playlist: " , $playlist->findvalue('./string');
}
退货:
Playlist: Yes - Tales From Topographic OceansLive albumF28F195257143396
我只想要第一个结果。有没有一种方法可以迭代这些结果或将结果作为数组访问?
感谢
我不擅长使用标记语言中的模块,但我有一个key
可以帮助您取得进展。
use XML::LibXML;
use feature qw(say);
my $playlists = "<playlists>
<dict>
<key>Name</key><string>Yes - Tales From Topographic Oceans</string>
<key>Description</key><string>Live album</string>
<key>Playlist ID</key><integer>67312</integer>
<key>Playlist Persistent ID</key><string>F28F195257143396</string>
<key>All Items</key><true/>
<key>Playlist Items</key>
</dict>
</playlists>";
my $dom = XML::LibXML->load_xml(string => $playlists);
foreach my $news ($dom->findnodes('/playlists/dict/key[position()=1]'))
{
say "Playlist: ", $news, "t", $news->findvalue('/playlists/dict/string[position()=1]');
}
您可以浏览以下站点并参阅XML::LibXML
上的position
、preceding
和following
命令,这将有助于您的进一步说明。谢谢
>OUTPUT:
Playlist: <key>Name</key> Yes - Tales From Topographic Oceans
搜索引擎有几个网站可以参考,这只是我马上得到的。