我有一个巨大的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。
答案 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);