2012-01-09 79 views
1

我用這樣的代碼DOM文檔不加載一個較大的有效XML文件

$dom = new DOMDocument; 
$dom->loadXML($xml_source); 
$xml = simplexml_import_dom($dom); 

,我得到的連接錯誤:

Warning (2): DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag ZverejnujeText line 34 in Entity, line: 273 [APP/Controller/RecordsController.php, line 43] 
Warning (2): DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag StatnaPomocIneProgramyPodpory line 2 in Entity, line: 273 [APP/Controller/RecordsController.php, line 43] 
Warning (2): simplexml_import_dom() [function.simplexml-import-dom]: Invalid Nodetype to import [APP/Controller/RecordsController.php, line 47] 

當試圖加載此xml(〜110 KB)

而根據w3c驗證程序,xml是有效的。

我沒有問題加載this(〜25 kb的,但同樣的結構)

如果我不使用DOM和我加載發生直接

$xml = simplexml_load_string($xml_source); 

同樣的錯誤的XML。

此刻我迷路了,我該如何解決這個問題?

+3

您提供的信息是錯誤的。 XML無效,請閱讀由'DOMDocument :: loadXML()'報告的錯誤消息。您需要先修復XML。無論如何DOMDocument沒有問題來閱讀大量有效的XML文件。 – hakre 2012-01-09 11:11:55

+0

與大我並不意味着110kB,更喜歡60兆字節等;) – hakre 2012-01-09 11:19:39

+1

http://www.w3schools.com/xml/xml_validator.asp根據這是它在語法上有效,我不能發現任何錯誤文件。如果我沒有忽略任何東西,它正在抱怨的標籤被正確關閉和嵌套 – 2012-01-09 11:19:55

回答

0

我不知道如果這能幫助你,但DOM文檔:: loadXML的()直接加載XML DOM文檔一樣:: loadXML的( '<元素>值< /件>'); 我想你想加載的XML文件,而不是一個字符串, 我試過DOMDocument :: load('hxxp://....../yourfile.xml'); 這對我有效。

希望這會有所幫助。 Grets,Nik