在Perl中使用Mojo :: DOM的XML模式,如何匹配子标签的内容?

前端之家收集整理的这篇文章主要介绍了在Perl中使用Mojo :: DOM的XML模式,如何匹配子标签的内容?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下 XML

<Product>
  ...
    <TitleDetail>
      <TitleType>01</TitleType>
      <TitleElement>
        <TitleElementLevel>01</TitleElementLevel>
        <TitleText>This is the title I'm looking for</TitleText>
      </TitleElement>
    </TitleDetail>
  ...
</Product>

(如果你好奇的话,这是ONIX.)

我想提取01类型的标题.
我试过了:

say $dom->at('TitleDetail[TitleType="01"] > TitleElement > TitleText')

但这不起作用.看起来标签[attr = value]语法实际上只适用于属性.

有一种简单的方法可以做我想要的吗?

解决方法

它可以用Mojo :: DOM完成,但它很长.有几次Mojo :: Collections在那里,所以你需要得到第一个元素.

use Mojo::DOM;

my $dom = Mojo::DOM->new->xml(1)->parse($xml);
say $dom->find("TitleType")->grep(sub{ $_->text eq "01"})->first
    ->following("TitleElement")->first->at("TitleText")->text;

猜你在找的Perl相关文章