我有一个巨大的XML文件(114 KB/1719行;请参阅下面的错误消息,为什么我说巨大)我尝试阅读它,因为我之前已经完成了两个类似的文件.
其他两个文件正常加载并且大小相当,唯一的区别是所讨论的文件包含阿拉伯文本.所以这是PHP代码:
$doc3 = new DOMDocument('1.0', 'utf-8');
$doc3->load($masternumber.'.xml');
Run Code Online (Sandbox Code Playgroud)
错误是:
警告:DOMDocument :: load()[domdocument.load]:文档中的深度过高:256在文件中使用XML_PARSE_HUGE选项:...
然后$doc3不加载文件.所以我修改了代码:
$doc3->load($masternumber.'.xml', "LIBXML_PARSEHUGE");
Run Code Online (Sandbox Code Playgroud)
我最后还有另一个警告:
警告:DOMDocument :: load()期望参数2为long,字符串在...中给出
$doc3 又空了.
这有什么问题?其他文件包含其他语言的相同文本并正确加载但不是这个?我使用的是PHP 5.3.9.
使用常量,而不是字符串.
$doc3->load($masternumber.'.xml', LIBXML_PARSEHUGE);
Run Code Online (Sandbox Code Playgroud)
有关DOMDocument::load()完整详细信息,请参阅文档 第二个参数是一个长整数,表示常量列表中的选定选项.
顺便提一下,如果由于任何原因需要多个选项,可以通过将它们与按位OR运算符组合来完成 |
// Multiple options OR'd together...
// Just FYI, not specific to your situation...
$doc3->load($masternumber.'.xml', LIBXML_PARSEHUGE|LIBXML_NSCLEAN);
Run Code Online (Sandbox Code Playgroud)