你已經得到了無效的XPath查詢需要被固定的,因爲一個無效的XPath查詢總是會導致錯誤。你不能使用它的結果來獲取節點。
不幸的是,xpath查詢無效,因爲XML無效。所以你不能使用xpath查詢(或者進一步測試它/繼續編寫它)而不先修復XML。
從您在問題中提供的XML中,顯然缺少w-prefix的名稱空間聲明。
您需要啓用最高級別的錯誤報告(E_ALL
),顯示開發環境中的錯誤以及錯誤日誌記錄。然後,您可以按照錯誤日誌:
Warning: DOMDocument::loadXML(): Namespace prefix w on document is not defined in Entity, line: 1 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on body is not defined in Entity, line: 2 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on p is not defined in Entity, line: 3 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on r is not defined in Entity, line: 4 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMDocument::loadXML(): Namespace prefix w on t is not defined in Entity, line: 5 in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 15
Warning: DOMXPath::query(): Undefined namespace prefix in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 17
Warning: DOMXPath::query(): Invalid expression in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 17
Fatal error: Call to a member function item() on a non-object in /tmp/execpad-1d8a88cab4fd/source-1d8a88cab4fd on line 18
由於這些節目,也有很多問題,這到底呈現XPath查詢無效,最後把你的整個腳本制止XML。
如果設置一個變量,然後檢查下一行,如果它是set =沒必要。還要考慮將代碼從提取zip文件與執行XML解析中分離出來。這絕不能在一個地方。此外,您的問題對於更多在這裏進行解壓縮的用戶來說會更有意義。 – hakre 2013-05-03 16:57:15
另外,在提出一個普遍問題之前(比如描述一個故事的長描述是什麼以及什麼不是等等),首先檢查錯誤消息。給出具體的信息出了什麼問題。我給你留個答案來表明這一點。 – hakre 2013-05-03 17:00:38
考慮給https://github.com/PHPOffice/PHPWord一個嘗試。它可能使事情變得更容易,因爲它專門針對Word。 – Gordon 2013-05-03 17:29:28