本当にただのメモ

なるべく Qiita に投稿しよう

XML::LibXML で XML をパースし、要素を取得する

use XML::LibXML;

my $xml_str = <<'__XML__';
<root>
    <category>
        <name>fruit</name>
        <item>
            <name>apple</name>
        </item>
        <item>
            <name id="pearname">pear</name>
            <price>200</price>
        </item>
    </category>
    <category>
        <name>car</name>
    </category>
</root>
__XML__

# $document is a XML::LibXML::Document
my $document = XML::LibXML->load_xml(string => $xml_str);

# @nodes are [ XML::LibXML::Element ]
my @nodes = $document->getElementsByTagName('name');
for (@nodes) {
    # $_->getFirstChild returns a XML::LibXML::Text
    say $_->getFirstChild->getValue; # getData でも可
}
fruit
apple
pear
car

See Also

https://metacpan.org/pod/distribution/XML-LibXML/LibXML.pod