gpt4 book ai didi

xml - Perl XML 获取同一父项的子项详细信息

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:24 26 4
gpt4 key购买 nike

我有以下 XML,如果正则表达式与另一个子元素匹配,我希望从同一父元素获取子元素。问题是,XML 到处都是重复的命名标签,因此很难简单地执行 Movie->Year,因为有很多电影元素。

例如

数据:

<movie>
<title>Titanic</title>
<year>1997</year>
<genre>Drama</genre>
</movie>
<movie>
<title>Moneyball</title>
<year>2011</year>
<genre>Sport/Drama</genre>
</movie>
<movie>
<title>Fight Club</title>
<year>1999</year>
<genre>Drama/Action</genre>
</movie>

Perl

 my $simple = XML::Simple->new( );
my $tree = $simple->XMLin($_);
my $movie = $tree->{movie}{title};

if($movie =~ /Titanic/)
{
# $movie -> year ???
# desired output = 1997
}

使用 XML::Simple 最简单的方法是什么?

最佳答案

XML::Simple 没有简单的方法,因为 it's the hardest XML parser to use .它自己的文档警告不要使用它。 (“强烈反对在新代码中使用此模块。”)


你所拥有的不是有效的 XML,因此我们首先必须使其成为有效的 XML

use XML::LibXML qw( );

my $parser = XML::LibXML->new();
my $doc = $parser->parse_string("<movies>$not_quite_xml</movies>");

my ($movie_node) = $doc->findnodes('/movies/movie[title/text()="Titanic"]')
or die("Titanic not found\n");

my $year = $movie_node->findvalue('year/text()');
...

关于xml - Perl XML 获取同一父项的子项详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55290765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com