2010-04-03 16 views
5

Para uno de mis proyectos, estoy usando la clase DOMDocument para cargar y manipular documentos XML.Enumerar espacios de nombres registrados de un objeto PHP DOMDocument

Tendría que recuperar todos los espacios de nombres utilizados en el documento; Sin embargo, no puedo encontrar cómo lo haría. La clase DOMDocument tiene métodos para obtener el prefijo de espacio de nombres de un URI o el URI de un prefijo de espacio de nombres, pero no he visto nada para enumerar realmente los espacios de nombres registrados.

La biblioteca SimpleXML tiene un método getNamespaces() para eso. ¿Hay un equivalente para DOMDocument?

Respuesta

6

DOM no tiene tal función afaik. Miré brevemente el código fuente de SimpleXml y creo que itera el XML cargado y recopila los espacios de nombres (mi C es muy mala). La solución más fácil sería obtener los espacios de nombres importando DOM dom en SimpleXml para este propósito. Tal vez así:

class DomUtils 
{ 
    public static function getNamespaces($dom) 
    { 
     $sxe = simplexml_import_dom($dom); 
     return $sxe->getNamespaces(); 
    } 

    public static function getDocNamespaces($dom) 
    { 
     $sxe = simplexml_import_dom($dom); 
     return $sxe->getDocNamespaces(); 
    } 
} 

También podría tratar de obtener todos los espacios de nombres con XPath. Ver la siguiente pregunta y responde:

+0

Voy a dar un mejor aspecto esta tarde hoy. Gracias :) – zneak

Cuestiones relacionadas