XML::LibXML.findvalue返回具有相同标记的多个节点的串联结果



我有一个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上的positionprecedingfollowing命令,这将有助于您的进一步说明。谢谢

>OUTPUT:
Playlist: <key>Name</key>       Yes - Tales From Topographic Oceans

搜索引擎有几个网站可以参考,这只是我马上得到的。

最新更新