PHP - Comprobar Archivos XML

 
Vista:
sin imagen de perfil

Comprobar Archivos XML

Publicado por Joan Carles (8 intervenciones) el 16/01/2023 10:35:41
Estoy haciendo una pequeña aplicación que lo que debe de hacer es recoger de una ubicación los diferentes archivos XML, comprobar si están bien formados, en caso de que alguno de ellos no lo este lo grabe en un log y pase al siguiente archivo XML y finalmente que capturemos unos datos de estos archivos XML y los guardemos en una BBDD.

El problema es que me he atascado y no consigo averiguar como realizar la comprobación de los XML y que luego genere el log.

Les paso el codigo que tengo escrito.

<?php
// Obrim tots els xml i ho guardam en un json
$fitxers = glob("../archivos/*.xml", GLOB_ERR);
$resultat = array();
$a_id = array();

if (is_array($fitxers))
{
foreach($fitxers as $f)
{
$f2 = "";
$ip = explode(".",$f);
echo $f;
echo implode($ip);
$fitxer_ok = FALSE;
// comparar fitxers de wlan (1) o directip (2)
if (substr($ip[2], -3) == "1" && file_exists("../archivos/1.1.1.".$ip[5].".xml"))
{
$fmod = filemtime($f);
$fmod2 = filemtime("../archivos/1.1.1.".$ip[5].".xml");
$f2 = "../archivos/1.1.1.".$ip[5].".xml";
if ($fmod > $fmod2)
$fitxer_ok = TRUE;
}
elseif (substr($ip[2], -3) == "1" && file_exists("../archivos/2.2.2.".$ip[5].".xml"))
{
$fmod = filemtime($f);
$fmod2 = filemtime("../archivos/2.2.2.".$ip[5].".xml");
$f2 = "../archivos/2.2.2.".$ip[5].".xml";

if ($fmod > $fmod2)
$fitxer_ok = TRUE;
}
else
{
$fitxer_ok = TRUE;
}
if ($fitxer_ok && filesize($f) !=0 ) {
$xml = simplexml_load_file($f);
$d = $xml->coordinates[0]->count()-1;

$temp = array (
"id" => (string)$xml->attributes(),
"lat" => (string)$xml->coordinates[0]->coordinate[$d]->latitude,
"lon" => (string)$xml->coordinates[0]->coordinate[$d]->longitude,
"time" => (string)$xml->coordinates[0]->coordinate[$d]->time,
"alt" => (string)$xml->coordinates[0]->coordinate[$d]->altitude,
"ip"=> (string)substr($ip[2], -3),
);

$resultat[] = $temp;
$a_id[] = (string)$xml->attributes();

if (file_exists($f2)) $xml2 = simplexml_load_file($f2);
if (filesize($f) !=0 && filesize($f2) !=0 && (string)$xml->attributes() != (string)$xml2->attributes())
error_log("DISCREPANCIA, el id en les ips ".$f." i ".$f2." té dos ids: ".(string)$xml->attributes()." i ".(string)$xml2->attributes());
}

// Cream un fitxer LOG
$logFile = fopen("logbus.txt", 'a') or die("Error Creant el LOG");
fwrite($logFile, "\n".date("d/m/Y H:i:s")." Fitxer"." ".implode($fitxers)) or die("Error en el fitxer");
fclose($logFile);
}
}

$fp = fopen('as.json', 'w');

fwrite($fp, json_encode($resultat));

fclose($fp);

?>

¿ Alguien tiene alguna idea o se le ocurre alguna cosa para poder resolverlo ?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder