我目前正在嘗試使用DOMDocument解析文檔,並且遇到了一些嚴重問題。我創建了一個在php 5.2.9上運行良好的腳本,使用DOMNode :: nodeValue來取出內容。同樣的腳本在php 5.3.3上沒有獲得任何內容 - 即使它正確地導航到正確的節點來提取內容。什麼會導致DOMNode :: nodeValue爲空?
基本上,所用的代碼如下所示:
$dom = new DOMDocument();
$dom->loadHTML($data);
$dom->preserveWhiteSpace = false;
$xpath = new DOMXpath($dom);
$nodelist = $xpath->query($query);
$value = $nodelist->item(0)->nodeValue;
我檢查,以確保該項目(0)實際上是一個節點 - 它甚至正確類型的存在,但的nodeValue是空。
該腳本適用於某些文檔,但不適用於其他文檔(關於5.3.3) - 關於5.2.9它適用於所有文檔,返回正確的nodeValue。
我發現這樣的問題與不同的PHP版本捆綁不同的libxml版本,所以不要丟棄它只是一個錯誤。但是,重現問題的示例文檔可能有助於診斷。 – 2010-11-16 12:03:12