Esto suena como una pregunta bastante fácil de responder, pero no he podido hacer que funcione. Estoy ejecutando PHP 5.2.6.¿Cómo puedo averiguar el espacio de nombre de un elemento en PHP DOM?
que tienen un elemento DOM (el elemento raíz) que, cuando voy a $ element-> saveXML(), que da salida a un atributo xmlns:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
...
Sin embargo, no puedo encontrar ninguna manera mediante programación dentro de PHP para ver ese espacio de nombres. Quiero poder verificar si existe y en qué está configurado.
Verificar $document->documentElement->namespaceURI
sería la respuesta obvia, pero está vacía (nunca he podido conseguir que no esté vacía). ¿Qué está generando ese valor xmlns en la salida y cómo puedo leerlo?
La única forma práctica que he podido hacer esto hasta ahora es un truco completo, guardándolo como XML en una cadena usando saveXML() y luego leyendo a través de expresiones regulares.
Editar:
Esto puede ser una peculiaridad de XML de carga en el uso de loadHTML() en lugar de loadXML() y luego imprimirlo usando saveXML(). Cuando lo hace, parece que, por algún motivo, saveXML agrega un atributo xmlns, aunque no hay forma de detectar que este valor xmlns forma parte del documento con los métodos DOM. Lo que supongo significa que si tuviera una forma de detectar si el documento pasado se había cargado usando loadHTML() entonces podría resolverlo de otra manera.
muy bonito y detallado, no sabía acerca de los nodeTypes según el método de análisis, pero tiene sentido – edorian
Gracias por la pista sobre los tipos de nodo y la capacidad de usar xpath: ¡resuelve muchos de mis problemas! – thomasrutter