Visualizzazione risultati 1 fino 5 di 5

Discussione: php e xml

  1. #1
    Guest

    Predefinito php e xml

    Stavo tentando di fare uno script che gestisca i file xml tramite dom:

    $dom = new DomDocument;
    $dom->load("notizie/tute.xml");
    $records = $dom->GetElementsByTagName("prg");

    foreach($records as $record) {

    echo $record->GetElementsByTagName("nome")->item(0)->nodeValue.'<br>';

    }

    Solo che mi da errore quando vado a stampare il valore del nodo mi da questo errore: parse error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';'...

    Qualche suggerimento?

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Qual è la riga dove ti dà l'errore?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    beh a occhio direi che ci mancano le "()" del costruttore, cioè:
    new domDocument();
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  4. #4
    Guest

    Predefinito

    Ha ragione heracleum. Cmq mi sono accorto solo ora che il server altavista non supporta il dom. Qualche moderadore mi può consigliare un altro metodo per leggere i file xml?
    Ultima modifica di pnluck : 24-09-2005 alle ore 19.01.20

  5. #5
    L'avatar di radioradianti
    radioradianti non è connesso Utente storico
    Data registrazione
    26-11-2003
    Residenza
    Roma
    Messaggi
    1,000

    Predefinito

    Perchè cerchi proprio un mod che ti dia il codice?

    Cmq
    Tempo fa ho scritto questo codice che serve per caricare un file xml all'interno di una tabella mysql (non utilizza dom).
    Magari puoi adattarlo alle tue esigenze.

    Codice PHP:
    $Nome_File="";
    $num_array_item=0;
    $num_array_qty=0;
    $num_array_gen=0;
    $elementi=0;
    $errore_tag=0;
    $ver_error=0;
    $flussi_dir='E:/TFlussi';
    $VERSIONE_SW="0.1b";
    $VERSIONE_BUILD="20050804 - Beta";
    $LOG_FILE="prog_load.log";
    $PATH_LOG="E:/TFlussi/";
    $lista_file=array();

    //apertura del file di log
    //------------------------
    $fp1=fopen($PATH_LOG.$LOG_FILE,'a+');
    $data_partenza=date("j F Y - H:i:s");
    fwrite($fp1,"-------------------------------------\n");
    fwrite($fp1,"Load XML - Caricamento File ordini\n");
    fwrite($fp1,"-------------------------------------\n");
    fwrite($fp1,"Versione : ".$VERSIONE_SW."\n");
    fwrite($fp1,"Building : ".$VERSIONE_BUILD."\n");
    fwrite($fp1,"-------------------------------------\n");
    fwrite($fp1,$data_partenza."\n");
    fwrite($fp1,"====================================\n");

    //Apertura della direcotry contenente i flussi
    //--------------------------------------------
    if ($handle = opendir($flussi_dir)) {
    while (
    false !== ($file = readdir($handle))) {
    /*if ($file != "." && $file != ".." && substr($file,strlen($file)-3,3)!="old"
    && substr($file,strlen($file)-3,3)!="log" */
    if (substr($file,strlen($file)-3,3)==="dat"
    ) {
    $lista_file[]=$file;
    }
    }
    closedir($handle);
    }
    if (
    count($lista_file)==0) { fwrite($fp1,"Non ci sono ordini da caricare \n\n");die();}
    for (
    $c=0;$c<count($lista_file);$c++)
    {
    //Creazione del parser XML e inseriment in struttura
    //--------------------------------------------------
    $data = implode("", file($flussi_dir."/".$lista_file[$c]));
    $p = xml_parser_create();
    //xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($p, $data, $vals, $index);
    xml_parser_free($p);

    //Recupero del numero elementi
    //----------------------------
    $elementi=count($vals);

    //Stampa del nome file elaborato
    //------------------------------
    fwrite($fp1,"Nome del file elaborato : ".$lista_file[$c]."\n");

    //Controllo Tag di apertura e chiusura file
    //-----------------------------------------
    if ($vals[0]["tag"]=="RECORDSET" &&
    $vals[$elementi-1]["tag"]=="RECORDSET" &&
    $vals[0]["type"]== "open" &&
    $vals[$elementi-1]["type"] == "close"
    )
    {
    fwrite($fp1,"Parsing OK\n");
    }
    else
    {
    fwrite($fp1,"Parsing Fallito\nImpossibile effettuare l'inserimento\n");
    fwrite($fp1,"tag apertura = ".$vals[0]["tag"]." valore =".$vals[0]["type"]."\n");
    fwrite($fp1,"tag chiusura = ".$vals[$elementi-1]["tag"]." valore =".$vals[$elementi-1]["type"]."\n");
    die();
    }
    if (!
    array_key_exists("EMISSIONDATE",$index)) { fwrite($fp1,"ERRORE: Data emissione Mancante\n"); $errore_tag=1;}
    if (!
    array_key_exists("OWNER_ID",$index)) { fwrite($fp1,"ERRORE: Proprietario Mancante \n"); $errore_tag=1;}
    if (!
    array_key_exists("ORD_NUM",$index)) { fwrite($fp1,"ERRORE: Numero ordine Mancante\n"); $errore_tag=1;}
    if (!
    array_key_exists("ORD_DATE",$index)) { fwrite($fp1,"ERRORE: Data ordine Mancante\n"); $errore_tag=1;}

    if (
    $errore_tag==0)
    {
    fwrite($fp1,"Controlli Tag OK\n");
    }
    else
    {
    fwrite($fp1,"IMPOSSIBILE EFFETTUARE IL CARICAMENTO\n");
    die();
    }

    fwrite($fp1,"Informazioni file\n");
    fwrite($fp1,"_________________\n\n");
    fwrite($fp1,"Numero degli elementi contenuti : ".count($vals)."\n");
    fwrite($fp1,"Indici Contenuti : ".count($index)."\n");
    fwrite($fp1,"Data File : ".substr($vals[$index['EMISSIONDATE'][0]]['value'],0,8)."\n");

    fwrite($fp1,"NUMERO DETTAGLI : ".count($index['ORD_DTL'])."\n");
    fwrite($fp1,"NUMERO RIGHE : ".count($index['LINE_NUM'])."\n\n");
    fwrite($fp1,"Inizio caricamento...\n");
    fwrite($fp1,"Inserimento testatata ");
    //Preparazione query inseriemento testata ordine
    //----------------------------------------------
    $SQL_TESTATA="INSERT INTO OUTORDHDR (ord_num,owner_id,carrier,ord_date,
    delivery_type,sold_name,sold_phone,
    sold_email,sold_street,sold_postcode,
    sold_city,sold_prov,sold_country,
    shp_name,shp_phone,
    shp_email,shp_street,shp_postcode,
    shp_city,shp_prov,shp_country) values ('"
    ;
    $SQL_TESTATA.=addslashes($vals[$index['ORD_NUM'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['OWNER_ID'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CARRIER'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['ORD_DATE'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['DELIVERYTYPE'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_NAME'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_PHONE'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_EMAIL'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_STREET'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_POSTCODE'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_CITY'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_PROV'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_COUNTRY'][1]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_NAME'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_PHONE'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_EMAIL'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_STREET'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_POSTCODE'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_CITY'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_PROV'][0]]['value'])."','";
    $SQL_TESTATA.=addslashes($vals[$index['CONTACT_COUNTRY'][0]]['value'])."')";

    //Inserimento della testata ordine
    //--------------------------------
    $mysqli->query($SQL_TESTATA);

    if (
    $mysqli->errno!=FALSE)
    {
    fwrite($fp1,"ATTENZIONE : \n");
    fwrite($fp1,"ERRORE N. ".$mysqli->errno."\n");
    fwrite($fp1,"[".$mysqli->error."]\n");
    fwrite($fp1,"RollBack\n\n");
    $mysqli->rollback();
    }
    else
    {
    fwrite($fp1,"FATTO\n");
    fwrite($fp1,"Inserimento dettaglio :\n");
    //Inserimento dei dettagli
    //------------------------
    $ver_error=0;
    for (
    $i=0;$i<count($index['LINE_NUM']);$i++)
    {
    fwrite($fp1,"Inserimento riga N.".($i+1)." ");
    $SQL_DETTAGLIO="INSERT INTO OUTORDDTL (id_ord_hdr,line_num,item_num,lot_num,qty_ord) values (0,";
    $SQL_DETTAGLIO.=$vals[$index['LINE_NUM'][$i]]['value'].",'";
    $SQL_DETTAGLIO.=$vals[$index['ITEM_NUM'][$i]]['value']."','";
    $SQL_DETTAGLIO.=$vals[$index['LOT_NUM'][$i]]['value']."',";
    $SQL_DETTAGLIO.=$vals[$index['ITM_QTY'][$i]]['value'].")";
    $mysqli->query($SQL_DETTAGLIO);

    if (
    $mysqli->errno!=FALSE)
    {
    fwrite($fp1,"ATTENZIONE : \n");
    fwrite($fp1,"ERRORE N. ".$mysqli->errno."\n");
    fwrite($fp1,"[".$mysqli->error."]\n");
    fwrite($fp1,"RollBack\n\n");
    $mysqli->rollback();
    $ver_error=1;
    }
    else
    {
    fwrite($fp1,"FATTO\n");
    }
    }
    }

    //commit di test
    //--------------
    if ($ver_error==0) {$mysqli->commit();} else {$mysqli->rollback();}
    rename($flussi_dir."/".$lista_file[$c], $flussi_dir."/".$lista_file[$c].".old");
    }
    fclose($fp1);

    ?>
    Dopo aver effettuato il caricamento, rinomina i file da .dat a .old in modo da non elaborarli una seconda volta.

    Ciao

    Leandro

    Happy Slack!
    Ultima modifica di radioradianti : 25-09-2005 alle ore 12.38.03

    E' on line il numero 12 di Topolinux - Totalmente rinnovato!
    TopoLinux è anche chat! irc.azzurra.org canale #topolinux
    La semplicità di questo dono è inversamente proporzionale alla qualità della nostra amicizia

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •