my $foster_home = XML::LibXML::Document->new("1.0", "UTF-8"); # Register the namespaces: $cve_xc->registerNs( def => 'http://scap.nist.gov/schema/feed/vulnerability/2.0' ); $cve_xc->registerNs( vuln => 'http://scap.nist.gov/schema/vulnerability/0.4' ); $cve_xc->registerNs( cvss => 'http://scap.nist.gov/schema/cvss-v2/0.2' ); # Find the appropriate CVE entry in the data source: for my $entry ( $cve_xc->findnodes( "/def:nvd/def:entry[\@id = '$cve_id']" )) { if ( my ( $metrics ) = $cve_xc->findnodes( 'vuln:cvss/cvss:base_metrics', $entry )) { ($av) = $cve_xc->find('cvss:access-vector', $metrics); ($ac) = $cve_xc->find('cvss:access-complexity', $metrics); ($au) = $cve_xc->find('cvss:authentication', $metrics); ($ci) = $cve_xc->find('cvss:confidentiality-impact', $metrics); ($ii) = $cve_xc->find('cvss:integrity-impact', $metrics); ($ai) = $cve_xc->find('cvss:availability-impact', $metrics); } else { $av = ""; $ac = ""; $au = ""; $ci = ""; $ii = ""; $ai = ""; } } $av->setOwnerDocument($foster_home); $ac->setOwnerDocument($foster_home); $au->setOwnerDocument($foster_home); $ci->setOwnerDocument($foster_home); $ii->setOwnerDocument($foster_home); $ai->setOwnerDocument($foster_home);