rutarelativa

Total de entradas publicadas: 397

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. 168 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 Hola Alberto ¿te funciono el tip al final?, ¿cuando dices una...
  • Avatar del usuario Alberto
    Alberto yo tengo una aplicacion desktop y trabajo con netbeans 6 necesito...
  • Avatar del usuario Akeru
    Akeru Sera un placer verle por ahí... Hay varios compis que se las...
  • Avatar del usuario Sampedro
    Sampedro @Akeru Muchas gracias por su comentario cuando llegue a casa me...
  • Avatar del usuario Akeru
    Akeru Saludos...interesante "utilidad", para salir de la rutina.Con su...
Al azar
Lo más visto
Lo más comentado
Subir
iKat, mascota con realidad aumentada http://bit.ly/9YFgRT
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.