Загрузка xml размером 140 МБ с помощью simplexml_load_file

Я пытаюсь проанализировать XML размером 140 МБ с помощью simplexml_load_file(), как это

$sxe = simplexml_load_file("file.xml"); 
print_r($sxe);

он только возвращает объект

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [version] => 2.12
            [vocab-version] => 2015-09-08-01
        )

)

но тот же код работает на сервере. Я пробовал все, увеличивая лимит памяти, загружаемый размер и т. Д., Но не добился успеха. И тот же код работает для некоторых небольших файлов xml.


person Atul Saini    schedule 26.10.2016    source источник
comment
не могли бы вы предоставить дополнительную информацию? например код, который мы должны отлаживать?   -  person Franz Gleichmann    schedule 26.10.2016
comment
конечно, я использую это $sxe = simplexml_load_file(file.xml); print_r($sxe);   -  person Atul Saini    schedule 26.10.2016
comment
не размещайте код в комментариях. Вместо этого отредактируйте исходное сообщение.   -  person Franz Gleichmann    schedule 26.10.2016
comment
и, как я полагаю, он должен возвращать объект со всеми атрибутами из xml, но он возвращает только версию (как я упоминал выше)   -  person Atul Saini    schedule 26.10.2016
comment
Вы можете комбинировать XMLReader с SimpleXML: функция синтаксического анализа с помощью xmlreader в определенном php-коде"> stackoverflow.com/questions/24084203/ Таким образом, в память будет загружена только часть XML.   -  person ThW    schedule 26.10.2016
comment
мой xml имеет другую структуру, он не подходит для приведенного примера stackoverflow.com/questions/24084203/   -  person Atul Saini    schedule 26.10.2016


Ответы (1)


$simplexml = simplexml_load_file($file_path, 'SimpleXMLElement', LIBXML_PARSEHUGE|LIBXML_NSCLEAN);
//OR
$simplexml = new SimpleXMLElement($xml_string, LIBXML_PARSEHUGE|LIBXML_NSCLEAN);

Можете ли вы запустить этот код, как в этом примере?

person madankundu    schedule 26.10.2016
comment
Пожалуйста, попробуйте выполнить поиск в Google с помощью LIBXML_PARSEHUGE|LIBXML_NSCLEAN, вы можете увидеть множество решений для файлов максимального размера, - person madankundu; 26.10.2016
comment
$xsl-›loadXML(file_get_contents('xml_path'), LIBXML_PARSEHUGE); я могу анализировать это, но на самом деле я хочу объект простого элемента xml, можете ли вы помочь мне преобразовать объект документа dom в простой xml - person Atul Saini; 27.10.2016