【问题标题】:Display most recent additions to XML file?显示 XML 文件的最新添加?
【发布时间】:2013-08-16 22:04:15
【问题描述】:

我正在尝试显示此 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>";
}
?>

【问题讨论】:

标签: php xml parsing


【解决方案1】:

由于您无法直接操作 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>";
    }
}

【讨论】:

  • 这很好,但我希望最近的漏洞(当前为 CVE-2013-5310)位于列表顶部,紧随其后的是之前的漏洞(当前为 CVE-2013-5309)等等。我的错是没有更清楚。我进行了以下代码更改并且它有效,感谢您的帮助。 $count=count($all) - 1; $offset = $count - 10; while ($count >= $offset){ $entry = $all[$count]; $vuln = $entry->children($ns['vuln']); $href = $vuln->references->reference->attributes()->href;回声 "" 。 $vuln->{'cve-id'} 。 "
    "; $count--; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多