2010-04-03 6 views
5

Pour l'un de mes projets, j'utilise la classe DOMDocument pour charger et manipuler des documents XML.Énumérer les espaces de noms enregistrés d'un objet DOMDocument PHP

Je devrais récupérer chaque espace de noms utilisé dans le document; Cependant, je ne peux pas trouver comment je ferais ça. La classe DOMDocument a des méthodes pour obtenir le préfixe d'espace de noms d'un URI ou l'URI d'un préfixe d'espace de nommage, mais je n'ai vu rien pour réellement énumérer les espaces de noms enregistrés. La bibliothèque SimpleXML a une méthode getNamespaces() pour cela. Y a-t-il un équivalent pour DOMDocument?

Répondre

6

DOM n'a pas une telle fonction afaik. J'ai regardé brièvement le code source de SimpleXml et je pense qu'il itère le XML chargé et recueille les espaces de noms (mon C est très mauvais). La solution la plus simple consisterait à récupérer les espaces de noms en important le dom DOM dans SimpleXml à cette fin. Peut-être comme ceci:

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(); 
    } 
} 

Vous pouvez également essayer d'obtenir tous les espaces de noms avec XPath. Voir la question et les réponses suivantes:

+0

Je vais donner ce mieux voir plus tard aujourd'hui. Merci :) – zneak

Questions connexes