Como seria el script
Hola que tal no tengo mucha idea de programacion,a ver si alguien me puede ayudar,tengo un archivo xml de galerias de imagenes autoactualizable y quisiera saber que hacer para mostrar las galerias,gracias de antemano y un saludo.
Por cierto he encontrado este codigo por hay,pero no me funciona ¿que falla?
CODIGO:
<?// fichero que alojamos en nuestro server con privilegios de escritura
$file_xml="fichero_de_galerias.xml";
// ruta a la carpeta donde alojaremos las imagenes para distinguir entre videos y videos
$path_imgs="images/";
$parser = new parser;
//$fp = $parser->getXML("http://direccion/fichero_de_galerias.php?format=XML¶ms=", $file_xml);
class parser {
var $insideitem = false;
var $tag = "";
var $title = "";
var $description = "";
var $link = "";
function getXML($source, $target) {
$time = time() - 21600;
if(filemtime($target) < $time) {
$fp = fopen($source, 'r');
$fd= fopen($target, 'w');
fclose($fd);
while (!feof($fp)) {
$buffer = fgets($fp, 4096);
$fd= fopen($target, 'a');
fputs($fd, $buffer);
fclose ($fd);
}
fclose($fp);
}
$this->fp = fopen($target,"r") or die("Error leyendo el XML");
return $this->fp;
}
function close() {
fclose($this->fp);
xml_parser_free($this->parser);
$this->fp = '';
$this->parser = "";
}
}
$debug = 0; # Ponerlo a 1 si queremos depurar el script
$file = $file_xml;
$currentTag = "";
$currentAttribs = "";
$inicio=true;
$enlace="";
$titulo="";
$conta_script=0;
function startElement($parser, $name, $attribs)
{
global $currentTag, $currentAttribs, $titulo, $link, $type;
$currentTag = $name;
$currentAttribs = $attribs;
// Definir el elemento HTML que corresponde con cada token del xml
switch ($name) {
case "name":
while (list ($key, $value) = each ($attribs)) {
echo("+++$key: $valuen");
}
break;
case "url":
while (list ($key, $value) = each ($attribs)) {
echo("+++$key: $valuen");
}
break;
case "type":
while (list ($key, $value) = each ($attribs)) {
echo("+++$key: $valuen");
}
break;
default:
break;
}
}
function endElement($parser, $name)
{
global $currentTag, $titulo, $link, $type;
// tags HTML de salida
/* switch ($name) {
case "name":
echo($value);
break;
case "url":
echo($value);
break;
case "type":
echo($value);
break;
default:
break;
}*/
// vaciamos las variables
$currentTag = "";
$currentAttribs = "";
}
// procesamos los datos entre tags
function characterData($parser, $data)
{
global $currentTag, $titulo, $link, $type;
// añadimos los html al valor actual
switch ($currentTag) {
case "name":
echo "<a href='";
$titulo = $data;
break;
case "url":
echo $data;
//echo "<a href='".$data."'>";
break;
case "type":
$type = $data;
// como es el ultimo parametro en ser leido escribimos los datos y vaciamos las variables
echo "'>".$titulo." <img src='".$path_imgs.$type."'></a>";//."<img src='".$path_imgs.$type."'></a>";
$titulo="";
$url="";
$type="";
break;
default:
break;
}
}
// inicializar parseador
$xmlParser = xml_parser_create();
$caseFold = xml_parser_get_option($xmlParser,
XML_OPTION_CASE_FOLDING);
$targetEncoding = xml_parser_get_option($xmlParser,
XML_OPTION_TARGET_ENCODING);
if ($debug > 0) {
echo("El depurador esta: $debug<br>n");
echo("Case folding esta:
$caseFold<br>n");
echo("El charset es:
$targetEncoding<br>n");
}
// deshabilitar case folding
if ($caseFold == 1) {
xml_parser_set_option($xmlParser,
XML_OPTION_CASE_FOLDING, false);
}
// llamadas a las funciones
xml_set_element_handler(
$xmlParser, "startElement",
"endElement");
xml_set_character_data_handler($xmlParser, "characterData");
# abrir fichero XML
if (!($fp = fopen($file, "r"))) {
die("No se puede leer el archivo xml: $file");
}
# leer y parsear el xml
while ($data = fread($fp, 4096)) {
# manejador de errores
if (!xml_parse($xmlParser, $data, feof($fp))) {
die(sprintf("XML error: %s en la linea %d",
xml_error_string(xml_get_error_code($xmlParser)),
xml_get_current_line_number($xmlParser)));
xml_parser_free($xmlParser);
}
}
# librerar el parseador
xml_parser_free($xmlParser);
?>
CODIGO:
<?// fichero que alojamos en nuestro server con privilegios de escritura
$file_xml="fichero_de_galerias.xml";
// ruta a la carpeta donde alojaremos las imagenes para distinguir entre videos y videos
$path_imgs="images/";
$parser = new parser;
//$fp = $parser->getXML("http://direccion/fichero_de_galerias.php?format=XML¶ms=", $file_xml);
class parser {
var $insideitem = false;
var $tag = "";
var $title = "";
var $description = "";
var $link = "";
function getXML($source, $target) {
$time = time() - 21600;
if(filemtime($target) < $time) {
$fp = fopen($source, 'r');
$fd= fopen($target, 'w');
fclose($fd);
while (!feof($fp)) {
$buffer = fgets($fp, 4096);
$fd= fopen($target, 'a');
fputs($fd, $buffer);
fclose ($fd);
}
fclose($fp);
}
$this->fp = fopen($target,"r") or die("Error leyendo el XML");
return $this->fp;
}
function close() {
fclose($this->fp);
xml_parser_free($this->parser);
$this->fp = '';
$this->parser = "";
}
}
$debug = 0; # Ponerlo a 1 si queremos depurar el script
$file = $file_xml;
$currentTag = "";
$currentAttribs = "";
$inicio=true;
$enlace="";
$titulo="";
$conta_script=0;
function startElement($parser, $name, $attribs)
{
global $currentTag, $currentAttribs, $titulo, $link, $type;
$currentTag = $name;
$currentAttribs = $attribs;
// Definir el elemento HTML que corresponde con cada token del xml
switch ($name) {
case "name":
while (list ($key, $value) = each ($attribs)) {
echo("+++$key: $valuen");
}
break;
case "url":
while (list ($key, $value) = each ($attribs)) {
echo("+++$key: $valuen");
}
break;
case "type":
while (list ($key, $value) = each ($attribs)) {
echo("+++$key: $valuen");
}
break;
default:
break;
}
}
function endElement($parser, $name)
{
global $currentTag, $titulo, $link, $type;
// tags HTML de salida
/* switch ($name) {
case "name":
echo($value);
break;
case "url":
echo($value);
break;
case "type":
echo($value);
break;
default:
break;
}*/
// vaciamos las variables
$currentTag = "";
$currentAttribs = "";
}
// procesamos los datos entre tags
function characterData($parser, $data)
{
global $currentTag, $titulo, $link, $type;
// añadimos los html al valor actual
switch ($currentTag) {
case "name":
echo "<a href='";
$titulo = $data;
break;
case "url":
echo $data;
//echo "<a href='".$data."'>";
break;
case "type":
$type = $data;
// como es el ultimo parametro en ser leido escribimos los datos y vaciamos las variables
echo "'>".$titulo." <img src='".$path_imgs.$type."'></a>";//."<img src='".$path_imgs.$type."'></a>";
$titulo="";
$url="";
$type="";
break;
default:
break;
}
}
// inicializar parseador
$xmlParser = xml_parser_create();
$caseFold = xml_parser_get_option($xmlParser,
XML_OPTION_CASE_FOLDING);
$targetEncoding = xml_parser_get_option($xmlParser,
XML_OPTION_TARGET_ENCODING);
if ($debug > 0) {
echo("El depurador esta: $debug<br>n");
echo("Case folding esta:
$caseFold<br>n");
echo("El charset es:
$targetEncoding<br>n");
}
// deshabilitar case folding
if ($caseFold == 1) {
xml_parser_set_option($xmlParser,
XML_OPTION_CASE_FOLDING, false);
}
// llamadas a las funciones
xml_set_element_handler(
$xmlParser, "startElement",
"endElement");
xml_set_character_data_handler($xmlParser, "characterData");
# abrir fichero XML
if (!($fp = fopen($file, "r"))) {
die("No se puede leer el archivo xml: $file");
}
# leer y parsear el xml
while ($data = fread($fp, 4096)) {
# manejador de errores
if (!xml_parse($xmlParser, $data, feof($fp))) {
die(sprintf("XML error: %s en la linea %d",
xml_error_string(xml_get_error_code($xmlParser)),
xml_get_current_line_number($xmlParser)));
xml_parser_free($xmlParser);
}
}
# librerar el parseador
xml_parser_free($xmlParser);
?>