use strict; use warnings; use XML::XPath; use XML::XPath::XMLParser; my $data_file = "./nvdcve-2.0-2008.xml"; my $cve_id = 'CVE-2008-3763'; my $query = "/nvd/entry[@id = $cve_id]"; my $xp = XML::XPath-> new(filename => "$data_file"); foreach my $cve_entry ($xp->findnodes($query)) { my $AV = $cve_entry->find('//entry/vuln:cvss/cvss:base_metrics/cvss:access-vector'); my $AC = $cve_entry->find('//entry/vuln:cvss/cvss:base_metrics/cvss:access-vector'); my $AV = $cve_entry->find('//entry/vuln:cvss/cvss:base_metrics/cvss:access-complexity'); # etc... }