rutarelativa

Total de entradas publicadas: 417

DOMElement obtener Html (DOMElement to Html)

votar
DOMElement obtener Html (DOMElement to Html)

Hoy mismo en uno de mis proyectos me surgió un problema de que necesitaba obtener el Html que tenía almacenado en un objeto DOMElement. Buscando por la documentación de PHP he podido encontrar la solución, que compartiré con ustedes ya que he tardado bastante tiempo en obtener el Html de un objeto DOMElement y así os ahorro ese tiempo. No existe método para realizar el paso de DOMElement a Html de forma nativa, pero existe una forma que consiste en crear un nuevo objeto DOMDocument y en él clonarle el nodo del que queremos obtener el HTML, para posteriormente almacenarlo en una variable.

Html que obtendremos mediante DOMDocument

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES">
	<head>
		<title>Ejemplo</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta name="language" content="es" />
	</head>
	<body>
		<table>
			<tr><td>Soy una</td></tr>
			<tr><td>tabla</td></tr>
		</table>
	</body>
</html>

Ejemplo práctico en PHP para obtener Html de un DOMElement

<?php
	// Variables
	$dcDocument = new DOMDocument();
	$dmTabla    = null;

	// Cargamos el HTML
	$dcDocument->loadHTML( "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
							<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES">
								<head>
									<title>Ejemplo</title>
									<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
									<meta name="language" content="es" />
								</head>
								<body>
									<table>
										<tr><td>Soy una</td></tr>
										<tr><td>tabla</td></tr>
									</table>
								</body>
							</html>" );

	// Nos posicionamos en la tabla
	$dmTabla = $dcDocument->getElementsByTagName( "table" )->item(0);

	// Pintaremos solo la tabla pasando el objeto DOMElement para obtener el Html
	echo getHtml( $dmTabla );
	
function getHtml($dcNode)
{
    $dcAux = new DOMDocument( "1.0" );
    $dcNodeAux = $dcAux->importNode( $dcNode->cloneNode( true ), true );
    $dcAux->appendChild($dcNodeAux);

    return $dcAux->saveHTML();
}
?>

Función que realiza el paso DOMElement to Html

function getHtml($dcNode)
{
    $dcAux = new DOMDocument( "1.0" );
    $dcNodeAux = $dcAux->importNode( $dcNode->cloneNode( true ), true );
    $dcAux->appendChild($dcNodeAux);

    return $dcAux->saveHTML();
}

Una sencilla solución basada en el comentario de Daniel Morlock en la documentación de PHP.

Sobre el autor
Desarrollador en entornos web y Diseñador de profesión, muy activo, que busca siempre enfrentarse a retos cada vez más dificiles. Si un día no hago algo nuevo o no he superado alguna dificultad para mi es un día vacío. Cuento con dos titulaciones: Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Desarrollo de Aplicaciones Informáticas. Fundé rutarelativa porque siempre quise tener un sitio en donde compartir mis experiencias profesionales y a los problemas que me enfrento día a día en el ámbito profesional. 178 articulos realizados por Sampedro
Articulos relacionados

Comentarios en DOMElement obtener Html (DOMElement to Html)

Hasta el momento este artículo no tiene comentarios, sé el primero en comentar en él.

Trackback en DOMElement obtener Html (DOMElement to Html)

Hasta el momento este artículo no tiene trackback.
Escribir comentarios

Últimos comentarios
  • Avatar del usuario Sampedro
    Sampedro Viendo la casa donde vive ya te puedes echar una idea de cuanto...
  • Avatar del usuario Sergio
    Sergio ¡Que bestialidad de video!. Aquí en Ruta Relativa hemos hablado ya...
  • Avatar del usuario Sergio
    Sergio Acabo de escuchar el disco Blood & Metal y he de decir que los...
  • Avatar del usuario Alber_h
    Alber_h Hombre, viendo entre sus ventajas fiestas glamurosas, cosas...
  • Avatar del usuario Alber_h
    Alber_h Dios es buenísimo xDDD Chof!
Al azar
Lo más visto
Lo más comentado
Subir
Mod Millenium Falcon sobre la Dreamcast http://bit.ly/9rToDI
Síguenos
Sobre

Sampedro Desarrollador en entornos web y Diseñador de profesión, muy activo, que busca siempre enfrentarse a retos cada vez más dificiles. Si un día no hago algo nuevo o no he superado alguna dificultad para mi es un día vacío. Cuento con dos titulaciones: Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Desarrollo de Aplicaciones Informáticas. Fundé rutarelativa porque siempre quise tener un sitio en donde compartir mis experiencias profesionales y a los problemas que me enfrento día a día en el ámbito profesional.

Sergio Soy un desarrollador en entornos web y escritorio, entusiasta y amante de mi trabajo del que cada día espero aprender algo nuevo. Tengo una titulación de Técnico Superior en Desarrollo de Aplicaciones Informáticas y actualmente curso el primer año de Carrera Universitaria con el poco tiempo que me deja el trabajo. Fundé rutarelativa porque quiero que mi esfuerzo y tiempo invertidos en aprender y poner en práctica algo le resulte útil y fácil a otro usuario, del mismo modo que yo aprendo y ahorro tiempo con la ayuda de los demás.