我正在尝试解析一个更大的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
亲切的问候, 理查德
答案 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