2010-04-03 2 views
5

Per uno dei miei progetti, sto utilizzando la classe DOMDocument per caricare e manipolare i documenti XML.Enumera gli spazi dei nomi registrati di un oggetto DOMDocument PHP

Avrei bisogno di recuperare ogni spazio dei nomi utilizzato nel documento; tuttavia, non riesco a trovare come lo farei. La classe DOMDocument ha metodi per ottenere il prefisso dello spazio dei nomi di un URI o l'URI di un prefisso dello spazio dei nomi, ma non ho visto nulla per elencare effettivamente gli spazi dei nomi registrati.

La libreria SimpleXML ha un metodo getNamespaces() per quello. Esiste un equivalente per DOMDocument?

risposta

6

DOM non ha tale funzione afaik. Ho esaminato brevemente il codice sorgente di SimpleXml e penso che iterizzi l'XML caricato e raccolga gli spazi dei nomi (la mia C è pessima). La soluzione più semplice sarebbe quella di recuperare gli spazi dei nomi importando DOM in SimpleXml per questo scopo. Forse così:

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

Si potrebbe anche provare a ottenere tutti gli spazi dei nomi con XPath. Vedere la seguente domanda e le risposte:

+0

io darò questo un aspetto migliore più tardi oggi. Grazie :) – zneak