gpt4 book ai didi

perl - 使用 XML::Twig 处理嵌套元素

转载 作者:行者123 更新时间:2023-12-02 00:30:16 24 4
gpt4 key购买 nike

<cov>
<item>
<valo></valo>
<valt></valt>
<valtr></valtr>
</item>
<item>
<valo></valo>
<valt></valt>
<valtr></valtr>
</item>
<item>
<valo></valo>
<valt></valt>
<valtr></valtr>
</item>
</cov>

我正在尝试使用 twig 循环遍历每个项目的 valo 和 valtr - 我该怎么做?

到目前为止我已经有了这个,但是在子例程中我如何才能指定正确的节点“valo”?

my $t = XML::Twig->new(twig_handlers => {'cov/item' => \&item });
my $url;
$t->parse($fileContent);

sub item {
my ($t, $item) = @_;
print $item->text . "\n";
}

最佳答案

这是一个处理程序,显示了一种检查 cov/item 节点的子节点的方法:

sub item {
my ($t, $item) = @_;

my @kids = $item->children;
for my $kid ( @kids ) {
warn "valo is: " . $kid->text if $kid->name eq q{valo};
warn "valtr is: " . $kid->text if $kid->name eq q{valtr};
}
}

另一种方法是使用 findnodes( ) 和 Twig 的类似 XPath 的语法来定位元素:

my $t = XML::Twig->new->parse( $fileContent );
for my $node ( $t->findnodes( '//valo' ) ) {
warn "valo is: " . $node->text;
}

...或者对于完整的 XPath 语法,请改用 XML::Twig::XPath:

my $t = XML::Twig::XPath->new->parse( $fileContent );
for my $node ( $t->findnodes( '//valo | //valtr' ) ) {
warn "valo is: " . $node->text if $node->name eq q{valo};
warn "valtr is: " . $node->text if $node->name eq q{valtr};
}

参见 XML::Twig docs有关此处使用的方法的详细信息。

关于perl - 使用 XML::Twig 处理嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7259767/

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