Для личного использования в настоящее время я пишу рекурсивную функцию PHP, которая должна обрабатывать большое количество относительно больших файлов XML.Поскольку мне нужно всего лишь 2-3 узла, я искал способ сделать это максимально экономящим память и трафик.Поэтому я наткнулся на PHP Object XMLReader, который работает не совсем так, как ожидалось, и не очень хорошо документирован на PHP.net.Мой текущий код выглядит следующим образом:
<?php
$reader = new XMLReader();
$reader->open('http://path.to.xml/file', 'UTF-8');
$att1 = $reader->getAttribute('att1');
$att2 = $reader->getAttribute('att2');
$reader->close();
echo var_dump($att1) . ' ' . var_dump($att2);
?>
Как вы можете видеть, это чистая отладка, но она просто выводит NULL два раза, что, в соответствии с документацией, имеет место "если нет атрибута симя [найдено] найдено или [...] расположено на узле элемента. "
Структура XML (фактический файл больше 500 строк, но иногда также содержит теги CDATA):
<parentnode>
<att1><![CDATA[ VAL1 ]]></att1>
<randomtags>randomval</randomtags>
<att2>VAL2</att2>
<foo>bar</foo>
</parentnode>
У меня почти нет опыта работы с XML, и ранее я использовал SimpleXML только один раз.Я не хочу анализировать весь файл, только эти два значения.
Что я уже пробовал:
- , включающий параметр getAttribute в <и> *
- , статически вызывающий методы getAttribute
- , изменяющий параметр getAttribute навключать родительский узел несколькими способами
Любые советы или подсказки приветствуются.:)