2014-07-01 219 views
0

我想解析一個更大的XML文件,它有很多名稱空間,而且相當複雜。PHP 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

如果分配足夠的內存來腳本可以分析用SimpleXML大的XML文件。

假設$ this-> getSavedFile()表示具有根的完整xml請求以及名稱空間聲明。

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

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

輸出應該是。

CVE-2014-0001 

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