【问题标题】:DOMDocument does not load a larger valid xml fileDOMDocument 不加载更大的有效 xml 文件
【发布时间】:2012-01-09 11:08:19
【问题描述】:

我使用这样的代码

$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

$xml = simplexml_load_string($xml_source);

同样的错误发生。

我现在迷路了,我该如何解决?

【问题讨论】:

  • 您提供的信息有误。 XML 无效,请阅读DOMDocument::loadXML() 报告的错误消息。您需要先修复 XML。无论如何,DOMDocument 读取大型且有效的 XML 文件没有问题。
  • w3schools.com/xml/xml_validator.asp 根据这一点,它在语法上是有效的,我无法在文档中发现任何错误。如果我没有忽略任何东西,它所抱怨的标签会正确关闭和嵌套
  • @RomanKoncek w3fools.com
  • 该 XML 出现不同的错误:codepad.viper-7.com/rRfwBP
  • 这个问题似乎是题外话,因为它不是一个编程问题,根据 OP 数据已被 Mysql 静默截断,OP 因此被误导,然后关于 XML 的有效性(截断XML 通常是无效的 XML)。

标签: php simplexml domdocument


【解决方案1】:

我不确定这是否对您有帮助,但是 DOMDocument::loadXML() 像 DOMDocument::loadXML('value'); 这样加载直接 xml 我猜你想加载 xml 文件而不是字符串, 我试过 DOMDocument::load('hxxp://....../yourfile.xml'); 这对我有用。

希望这会有所帮助。 格雷茨,尼克

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 2016-01-11
    • 2018-02-06
    • 2012-03-27
    • 2010-12-13
    • 1970-01-01
    • 2019-02-12
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多