无法从PHP读取大型XML文件

时间:2012-01-31 13:53:36

标签: php xml-parsing

我有一个巨大的XML文件(114 KB / 1719行;请参阅下面的错误消息,为什么我说巨大的)我尝试阅读它,因为我之前已经完成了两个类似的文件。< / p>

其他两个文件正常加载并且大小相当,唯一的区别是所讨论的文件包含阿拉伯文本。所以这是PHP代码:

$doc3 = new DOMDocument('1.0', 'utf-8');
$doc3->load($masternumber.'.xml');

错误是:

  

警告:DOMDocument :: load()[domdocument.load]:文档中的深度过高:256使用文件中的XML_PARSE_HUGE选项:...

然后$doc3不加载该文件。所以我修改了代码:

$doc3->load($masternumber.'.xml', "LIBXML_PARSEHUGE");

最后还有另一个警告:

  

警告:DOMDocument :: load()期望参数2为long,字符串在...

中给出

$doc3再次为空。

它出了什么问题?其他文件包含其他语言的相同文本并正确加载但不是这个?我使用的是PHP 5.3.9。

1 个答案:

答案 0 :(得分:7)

使用常量,而不是字符串。

$doc3->load($masternumber.'.xml', LIBXML_PARSEHUGE);

有关完整详细信息,请参阅DOMDocument::load()文档。第二个参数是一个长整数,表示list of constants中的选定选项。

顺便提一下,如果出于任何原因需要多个选项,可以通过将它们与按位OR运算符|

组合来完成。
// Multiple options  OR'd together...
// Just FYI, not specific to your situation...
$doc3->load($masternumber.'.xml', LIBXML_PARSEHUGE|LIBXML_NSCLEAN);