perl使用xpath解析xml文件

本事例展示使用XML::XPath解析xml文件.

[文件] employees.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8" ?>
<employees>
    <employee age="30">
        <name>linux</name>
        <country>US</country>
    </employee>
    <employee age="10">
        <name>mac</name>
        <country>US</country>
    </employee>
    <employee age="20">
        <name>windows</name>
        <country>US</country>
    </employee>
</employees>
[文件] train_xml.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;
use warnings;
 
use XML::XPath;
 
 
my $xp=XML::XPath->new(filename=>"employees.xml");
 
#测试节点
print $xp->exists('/employees/employee[@age="10"]/name'),"\n";
 
#获取节点值
print $xp->findvalue('/employees/employee[@age="10"]/name'),"\n";
 
#获取节点属性值
print $xp->findvalue('/employees/employee[1]/@age'),"\n";
 
#遍历节点
my $nodeset=$xp->find('/employees/employee');
foreach my $node ($nodeset->get_nodelist){
    print $node->findvalue("name"),"\n";
}