2012-01-09 34 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