Как упорядочить возврат XML в зависимости от значений его тегов?

#php #xml

#php #xml

Вопрос:

Допустим, у меня есть страница php, которая динамически загружает возвращаемый метод, возвращающий XML. XML выглядит примерно так:

 <SYSTEM>
  <GUY>
    <ID>500</ID>
    <NAME>Joseph</NAME>
    <EMAIL>joseph@mark</EMAIL>
    <ERROR />
  </GUY>
  <GUY>
    <ID>510</ID>
    <NAME>Richard</NAME>
    <EMAIL>richard@gmail.com</EMAIL>
  </GUY>
</SYSTEM>
  

Теперь в моем PHP-файле есть простое «if», которое проверяет наличие тега ERROR. Если это обнаружено, то выводится сообщение об ошибке.
Результатом прямо сейчас является ошибка, печатаемая ПЕРЕД правильной печатью (Richard). Оба должны быть напечатаны, но я хочу поместить ошибки внизу, после правильных результатов. Ошибка выводится первой, потому что это первый результат XML. Как я могу это обойти?
Я думаю, это может быть просто, но я действительно не понимаю.

Моя проверка PHP примерно такая (она выполняется на основе количества тегов GUY, так что это будет дважды в соответствии с моим XML выше):

 $xmlresult = simplexml_load_string($xml);
$error = $xmlresult->xpath("//ERROR");

if($error==true){
   echo "error message here";
} else {
   echo "wee! no errors!"
}
  

Комментарии:

1. Какой код вы используете?

2. Добавлена проверка PHP в основной пост.

Ответ №1:

Я бы подошел к этому так, чтобы временно сохранять любые результаты ошибок в списке, когда я просматриваю XML-файл, и распечатывать подходящие по ходу работы. Затем, как только вы дойдете до конца файла, вы можете просмотреть свой список ошибок и распечатать их после всех исправных.

Такой простой алгоритм должен работать практически для любого метода просмотра XML, как с библиотекой синтаксического анализа, которая возвращает красивые объекты, так и с более грубыми методами на основе строк.

Комментарии:

1. Спасибо за вашу помощь, это решило мою проблему. 🙂