Парсинг XML, правильно ли?

Alkinoy

Начинающий
Парсинг XML, правильно ли?

Привет народ.
Ниже - варинт парсинга xml, который я пользую. Суть - разобрать все входящие данные (то есть не поиск чего то конкретного). Кто может оценить с точки зрения правильности/оптимизации/прочее?
PHP:
$ret = array();
        
        $dom = new DOMDocument();
        $dom->loadXml($this->getData($request));
        
        foreach ($dom->getElementsByTagName("payment") as $payment)
        {
                      
            foreach ($payment->childNodes as $n)
            {
                switch ($n->nodeName)
                {
                    case "payment_id":
                        $tmp["payment_id"] = $n->nodeValue;
                        
                        break;
                    case "payment_status":
                        $tmp["payment_status"] = $n->nodeValue;
                        
                        break;
                    case "payment_type":
                        $tmp["payment_type"] = $n->nodeValue;
                        
                        break;

                }
            }
            
            $ret[$tmp["payment_id"]] = $tmp;
        }
        
        return $ret;
-~{}~ 17.02.09 11:52:

ЗЫ
как вариант использовать конструкцию вида
PHP:
foreach ($st->childNodes as $n)
{
      if(false !== strpos($n->nodeName,"#"))
          continue;
                
      $tmp[$n->nodeName] = $n->nodeValue;
}
но что то он меня смущает появлением лишних элементов в массиве
 

Alkinoy

Начинающий
Автор оригинала: slach
;)
у тебя XML большой по размеру или маленький?
маленький.

в цифрах маленький - это до 5 кб по объему, и порядка 30 элементов (в среднем)
 

Alkinoy

Начинающий
у меня есть элементы с атрибутами + валидация... вроде симплхмл этого не умеет?
Может кто покажет свой вариант парсинга?
 

slach

Новичок
элементы с атрибутами оно умеет

а вот валидацию через DTD нет
только well-formed

но у вас в исходной задаче про валидацию ничего сказано не было
 

Alkinoy

Начинающий
да. просто суть вопроса была - правильно ли разбираю xml с использованием DOM? Правильно ли пользовать DOM в данном случае - тоже хороший вопрос, но это уже второй вопрос :)
 

slach

Новичок
ну так то вполне нормальный читабельный код

чего тебя в нем смутило то?
 

Alkinoy

Начинающий
Ничего не смутило. Вопрос был - правильно ли я делаю? Найти примеры разбора, кроме подобного, я не смог. вот и консультируюсь.
 

slach

Новичок
разбор (парсинг) тут заканчивается
строкой

$dom->loadXml($this->getData($request));

а остальное это уже конвертация DOM дерева в массив...
 
Сверху