PHP simpleXML Element解析复杂的XML

时间:2014-07-01 11:06:29

标签: php xml simplexml

我正在尝试解析一个更大的xml文件,它有很多命名空间,而且相当复杂。

以下是我要解析的根目录中的一个示例: http://pastebin.com/zJGQZBMV

这是我的PHP脚本:

private function importFromFile()
{
    $result = false;
    $xmlFile = simplexml_load_file($this->getSavedFile());
    foreach($xmlFile->children() as $entry){
        $entry->registerXPathNamespace("vuln", "http://scap.nist.gov/schema/vulnerability/0.4");
        var_dump($entry->{"vuln:cve-id"}) ;
        break;
    }
    return $result;
}

但是,它没有显示CVE Id。可能是因为命名空间?我收到了:

object(SimpleXMLElement)#6 (0) { }

我跟着:Parse XML with Namespace using SimpleXML

亲切的问候, 理查德

1 个答案:

答案 0 :(得分:-1)

如果为脚本分配了足够的内存,则可以使用SimpleXML解析大型xml文件。

假设$ this-> getSavedFile()表示带有root和命名空间声明的完整xml请求。

$xmlFile = new SimpleXMLElement($this->getSavedFile());

echo $xmlFile->entry['id'];    

输出应为。

CVE-2014-0001

参考: http://www.php.net/manual/en/simplexmlelement.construct.php