Sembra una domanda facile a cui rispondere ma non sono riuscito a farlo funzionare. Sto eseguendo PHP 5.2.6.Come posso trovare lo spazio dei nomi di un elemento in PHP DOM?
Ho un elemento DOM (l'elemento radice), che, quando vado a $ elemento-> saveXML(), emette un attributo xmlns:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
...
Tuttavia, non riesco a trovare un modo di programmazione entro PHP per vedere quel namespace. Voglio essere in grado di verificare se esiste e a cosa è impostato.
Il controllo $document->documentElement->namespaceURI
sarebbe la risposta ovvia ma è vuoto (non sono mai stato in grado di farlo essere non vuoto). Cosa sta generando quel valore xmlns nell'output e come posso leggerlo?
L'unico modo pratico in cui sono stato in grado di farlo fino ad ora è un hack completo: salvandolo come XML in una stringa utilizzando saveXML() e leggendolo attraverso le espressioni regolari.
Edit:
questo può essere una peculiarità di carico XML nell'uso loadHTML() piuttosto che loadXML() e quindi stamparlo utilizzando saveXML(). Quando lo fai, sembra che per qualche ragione saveXML aggiunge un attributo xmlns anche se non c'è modo di rilevare che questo valore xmlns fa parte del documento usando i metodi DOM. Il che, credo, significa che se avessi un modo per scoprire se il documento passato fosse stato caricato con loadHTML(), avrei potuto risolvere questo problema in un modo diverso.
molto bello e dettagliato, non conoscevo i nodeTypes a seconda del metodo di analisi ma ha senso – edorian
Grazie per il suggerimento sui nodetypes e la possibilità di usare xpath - risolve molti dei miei problemi! – thomasrutter