Извлечение данных из (огромного) xml файла с помощью php

У меня есть .xmlфайл (оригинал с более чем 7000 строк, но для тестирования я использовал один с всего 3 строками, в случае, если размер был моей проблемой, но это не было), из которого я хотел бы извлечь данные. Однако, будучи автоматически генерируемой вещью, это не очень красиво, наблюдайте:

<ROW MODID="182" RECORDID="561">
<COL>
<DATA>
</DATA>
</COL>
<COL>
<DATA>
6 quai St Pierre</DATA>
</COL>
<COL>
<DATA>
</DATA>
</COL>
<COL>
<DATA>
Monsieur</DATA>
</COL>
<COL>

etc, etc…
Я уже разработал запросы, которые мне нужно выполнитьXacobeo, но я не могу заставить его работать с php. Я пробовал множество вариантов, последний из которых следующий:

$xmldoc = new DOMDocument();
$xmldoc->load('hellashort.xml');
$xpathvar = new Domxpath($xmldoc);
$queryResult = $xpathvar->query('//COL');
foreach($queryResult as $result){
    echo $result->textContent;
}

Я пробовал этот код с более эстетически приятными файлами, и он работает, так как я могу заставить его работать с этим файлом?
Все предложения приветствуются.
Спасибо

Обновление
Я проверил короткий файл на ошибки и понял, что я не закрыл элемент, так что один работает, однако длинный файл не содержит ошибок в соответствии с онлайн-проверки, но по-прежнему не работает.

Обновление 2
Длинный файл теперь работает для запроса/, но ничего не возвращает, как только они становятся более сложными, т. е.: //ROW/COL[position()=39]/DATAкоторые возвращают правильные результаты в Xacobeo.
Возможно ли.xml, чтобы файл был слишком большим для такой обработки? (Этот файл о 11.2 Mo)

ОБНОВЛЕНИЕ 3-ИСПРАВЛЕНО
Поэтому я изменил свой подход и в конечном итоге сделал это таким образом:

$file=file_get_contents("go.xml");
$xml=simplexml_load_string($file);
$elements=$xml->path('//ROW/COL[position()=1]/DATA');

Я понимаю, почему это называется simpleXML, спасибо за всю помощь, хотя

2 ответа

  1. Прежде всего убедитесь, что ваш сервер настроен на отображение всех доступных ошибок.
    Как вариант, поместите этот фрагмент в самом начале вашего скрипта.

    ini_set('display_startup_errors',1);
    ini_set('display_errors',1);
    error_reporting(E_ALL | E_STRICT);
    

    Не могли бы вы поделиться сообщение об ошибке?

  2. Убедитесь, что документ содержит ровно один корневой элемент, т. е. элемент, содержащий все <ROW>элементы:

    <DOCUMENT>
    <ROW MODID="182" RECORDID="561">
    <COL>
    <DATA>
    </DATA>
    </COL>
    <COL>
    <DATA>
    6 quai St Pierre</DATA>
    </COL>
    <COL>
    <DATA>
    <!-- ... -->
    </DOCUMENT>
    

    Если у вас есть несколько строк без корня, это не хорошо formet XML-файл, и это приведет к сбою:

    <ROW MODID="182" RECORDID="561">
    <COL>
    <DATA>
    </DATA>
    </COL>
    <COL>
    <!-- ... -->
    </ROW>
    <ROW MODID="183" RECORDID="562">
    <!-- ... -->
    </ROW>