Плавающие namespaces. Как быть?

light83

Новичок
Всем привет!
Имеем один из двух вариантов XML:
PHP:
<a xmlns:ns1="namespace1" 
xmlns:ns2="namespace2" 
xmlns:ns3="namespace2">
   <b>
      <c>
      </c>
   </b>
</a>
Либо:
PHP:
<a xmlns:ns1="namespace1" 
xmlns:ns2="namespace2" 
xmlns:ns3="namespace2">
   <ns3:b>
      <ns2:c>
      </ns2:c>
   </ns3:b>
</a>
Про 2 namespace2 не опечатка, возможно несколько имен ns-ов с одинаковой декларацией. В общем, может быть несколько вариантов, хоть с ns-ами, хоть без, четкого имени ns-а не существует, всегда надо определять на основе декларированных.
Вопрос: как оптимальнее разобрать, как найти элементы b,c в SimpleXML-дереве?
Мне на ум приходит только такое: получаем список ns-ов в виде "имя=определение" у которых например определение "namespace2", и ищем: есть ли b:<полученное_имя-1>, b:<полученное_имя-2>, алгоритм мне кажется глупым. Есть ли что-то умнее?
Заранее всем спасибо.
 

light83

Новичок
Метод SimpleXML::children() агрументом принимает неймспейс, которым пользоватся для получения дочерних элементов.
Проблема в том, что точно неизвестно имя неймспейса. Это может быть как ns3, так и my_ns_928. Я как раз эту часть пытаюсь красиво решить, находить то что нужно, не используя жесткую привязку к имени неймспейса.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Проблема в том, что точно неизвестно имя неймспейса. Это может быть как ns3, так и my_ns_928. Я как раз эту часть пытаюсь красиво решить, находить то что нужно, не используя жесткую привязку к имени неймспейса.
 
Сверху