1

我正在尝试显示此 NVD XML 文件的最新添加:

http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-recent.xml

我可以使用以下代码将它们全部列出,但我只对显示最近的十个(暂时从 2013 年开始)感兴趣,并且 XML 文件按时间顺序列出它们(从 2011 年开始)。

<?php
$file= 'http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-recent.xml';
$xml = file_get_contents($file);
$sxe = new SimpleXMLElement($xml);
$ns = $sxe->getNamespaces(true);

echo "<b>Latest Vulnerabilities:</b><p>";
foreach($sxe->entry as $entry)
{
    $vuln = $entry->children($ns['vuln']);
    $href = $vuln->references->reference->attributes()->href;
    echo "<a href=" . $href . ">" . $vuln->{'cve-id'} . "</a><br>";
}
?>
4

1 回答 1

0

由于您不能直接操作 XML 数组,因此应该可以满足您的需求:

$file= 'http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-recent.xml';
$xml = file_get_contents($file);
$sxe = new SimpleXMLElement($xml);
$ns = $sxe->getNamespaces(true);

echo "<b>Latest Vulnerabilities:</b><p>";

$all = $sxe->entry;
$length = count($all);
$offset_start = $length - 10;

for($i = 0; $i < $length; $i++)
{
    if($i >= $offset_start)
    {
        $entry = $all[$i];
        $vuln = $entry->children($ns['vuln']);
        $href = $vuln->references->reference->attributes()->href;
        echo "<a href=" . $href . ">" . $vuln->{'cve-id'} . "</a><br>";
    }
}
于 2013-08-17T13:29:28.310 回答