crear xml a partir de un html

Rolo
30 de Diciembre del 2005
hola, no se mucho acerca de xml, y me gustaria saber como extraer una parte de una pagina html (ya lo hice) y pasar esto a xml....pero no para una pagina determinada sino para cualquier... alguna idea

Califa
30 de Diciembre del 2005
Hola.

A un nivel básico (que es el que yo manejo), XML es muy sencillo. Después, lógicamente, hay cosas más complicadas, pero generar un XML es relativamente fácil. Al fin y al cabo, no es más que un string/cadena de caracteres que sigue algunas reglas. Que son pocas, pero estrictas.

Por ejemplo, sólo puede haber un nodo "root", todos los tags/etiquetas (que los podés nombrar como se te antoje, no hay predefinidos como los de html <a><b>, etc) tienen que estar cerrados, los elementos/nodos tienen que estar anidados respetando una estructura jerárquica, etc. Pero si estás acostumbrado a HTML, muchas cosas de XML te van a resultar familiares. Con google (o cualquier otro buscador) vas a encontrar miles de tutoriales que explican mejor y en más detalle todas estas cuestiones.

Volviendo a tu duda, no sé si lo que querés es mostrar un XML en pantalla o guardarlo en un archivo (o hacer alguna otra cosa). Pero suponiendo que quieras hacer ambas, este script te puede servir (y puede ser un buen punto de partida para empezar a investigar el tema).

<?php
$texto = "texto de prueba";
$codigoHtml = "<b>Texto html de prueba</b><br><a href='http://www.php.net' target='blank'>php.net</a>";
$xml = "<?xml version='1.0' encoding='utf-8'?>";
$xml .= "<pruebaXML>";
$xml .= "<textoPlano>$texto</textoPlano>";
$xml .= "<codigoHTML><![CDATA[$codigoHtml]]></codigoHTML>";
$xml .= "</pruebaXML>";

if ($archivoXML = fopen("test.xml","w")) {
$caracterActual = "";
for ($i=0;$i<strlen($xml);$i++) {
$caracterActual = substr($xml,$i,1);
fwrite($archivoXML,$caracterActual);
}
fclose($archivoXML);
}
header("content-type:text/xml;charset=iso-8859-1");
echo $xml;
?>

En la varible $codigoHtml iría el código que extrajiste. La variable $texto podés borrarla si no te hace falta (la puse de ejemplo). En ese caso, también borrá la línea
$xml .= "<textoPlano>$texto</textoPlano>";
ya que no te hace falta.

Para mostrar el XML en pantalla solamente, comentá el if. Para grabar un .xml solamente, comentá las últimas 2 líneas.

Espero que esto te de una pista.

Suerte