==================- \ PROPRIETA': $file e' il documento xml, passato la prima volta con la chiamata di dom() $dom e' il documento dom completo FUNZIONI GETTER: 1) figlio ritorna il valore del tag 2) is_figlio ritorna true se il valore del tag è uguale a quello passato (query) 3) dom ritorna i children dom(tutto), root oppure children 4) figlio_multi ritorna tutti i figli con lo stesso nome in sequenza 5) nodo ritorna il contenuto del nodo tag_2 figlio di tag_1 nodo(tag_1,tag_2) */ function pulisci($var) { $var=str_replace("©","",$var); $var=str_replace(">",">",$var); $var=str_replace("<","<",$var); $var=str_replace("’","",$var); $var=str_replace("&amp;#8217;","\'",$var); $var=str_replace("&amp;#8220;","\"",$var); $var=str_replace("&amp;#8221;","\"",$var); $var=str_replace("&amp;#8211;","-",$var); $var=str_replace("&amp;#8264;","",$var); $var=str_replace("&ograve;","o'",$var); $var=str_replace("&ugrave;","u'",$var); $var=str_replace("&egrave;","e'",$var); $var=str_replace("È","E\'",$var); $var=str_replace("&igrave;","i'",$var); $var=str_replace("&agrave;","a'",$var); $var=str_replace("&eacute;","e'",$var); $var=str_replace("&deg;","°",$var); $var=str_replace("&quot;","\'",$var); $var=str_replace("quot;","\'",$var); $var=str_replace("&lt;","-",$var); $var=str_replace("&gt;","-",$var); $var=str_replace("&amp;#8364;","Euro",$var); $var=str_replace("»","\"",$var); $var=str_replace("«","\"",$var); $var=str_replace("&\'","\"",$var); $var=str_replace("?xml version=\"1.0\"?","?xml version=\"1.0\" encoding=\"iso-8859-1\"?",$var); $var=stripslashes($var); $var=str_replace("><",">\n <",$var); return $var; } function bottoni($stampa) { $fp=fopen("messaggio.gab","w"); fputs($fp,$stampa); fclose($fp); print "
Indietro
Stampa
Invia
"; } function figlio_set($nodo,$nome,$valore) { global $doc; $f = $doc->create_element($nome); $f = $nodo->add_child($f); $f->set_content($valore); } function figlio_set2($nodo,$nome,$valore,$att_nome,$att_val) { global $doc; $f = $doc->create_element($nome); $f = $nodo->add_child($f); $f->set_content($valore); $f->set_attribute($att_nome,$att_val); } ////////////////////////////////////////ritorna un array con gli attributi di secondo livello function att($children) { $contenuto = array(); for ($s=0; $scontent; }// for return $children1; }// function att function visualizza_var($ogg) { $mat=get_object_vars($ogg); while(list($prop,$val)=each($mat)) print "$prop=$val
"; } function xml_arr($percorso) { // trova i file XML nella directory e ritorna un array contenente i documenti $xml_arr=array(); $index=0; $handle=opendir($percorso); $data=getdate(time()); while ($file = readdir($handle)) { $posiz=strrpos($file,"."); $posiz=substr($file,$posiz+1,3); if ($posiz=="xml") { $xml_arr[$index]=$percorso.$file; $index++; }//if }//while return $xml_arr; }//xml_arr //////////////////////////////////////////////////////////////////////////// ////////////////////CLASS XDOC////////////////////////////////////////////// ////////////////////CLASS XDOC////////////////////////////////////////////// ////////////////////CLASS XDOC////////////////////////////////////////////// ////////////////////CLASS XDOC////////////////////////////////////////////// ////////////////////CLASS XDOC////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// class xdoc { var $file; var $dom; //FUNZIONI GETTER ////////////////////////////////////////ritorna il contenuto di primo livello di un tag figlio unico di un oggetto children function figlio($children,$tag) { $contenuto="Dato non trovato"; $dom=$this->dom; $root=$dom->document_element(); $children = domxml_children($root); for ($s=0; $stagname) { $children1 = domxml_children($children[$s]); $contenuto=$children1[0]->content; } }// for return $contenuto; } ////////////////////////////////////////ritorna un array con gli attributi di secondo livello function attrib2($children) { $contenuto = array(); for ($s=0; $stagname) { $children1 = domxml_children($children[$s]); for ($ss=0; $ss".$children2[0]->content; } } }// for return $contenuto; } ////////////////////////////////////////ritorna true se il figlio "tag" (di I livello) di un albero children contiene "valore" function is_figlio($children,$tag,$valore) { $flag="false"; for ($s=0; $stagname) { $children1 = domxml_children($children[$s]); $contenuto=$children1[0]->content; if ($contenuto==$valore) $flag="true"; } }// for return $flag; } //function is_figlio ///////////////////////////////////////////restituisce array con attributi del nodo tag1 di secondo livello function att($tag_1) { $dom=$this->dom; // da rivedere negli aggiornamenti $contenuto=array(); $contenut=0; // $matrice= get_class_methods(get_class($dom)); foreach ($matrice as $metodo) print "funzione : ".$metodo."
"; $root=$dom->document_element(); $i = $root->child_nodes(); $children1 =$root->first_child(); $prec=$children1; foreach ($i as $figlio) { $succ = $prec->next_sibling(); if ($tag_1==($succ->tagname)) { $contenuto[$contenut]=$succ->attributes(); $contenut++; } $prec=$succ; } //foreach ($i as $figlio) return $contenuto; }//function att ///////////////////////////////////////////cancella il nodo tag1 con tag2=cont(chiave ed univoco) function canc_nodo($tag_1,$tag_2,$cont) { $dom=$this->dom; // da rivedere negli aggiornamenti $contenuto=array(); $contenut=0; $valori=0; $flag="false"; // $matrice= get_class_methods(get_class($dom)); foreach ($matrice as $metodo) print "funzione : ".$metodo."
"; $root=$dom->document_element(); $i = $root->child_nodes(); $children1 =$root->first_child(); $prec=$children1; // passa in rassegna tutti i nodi di primo livello foreach ($i as $figlio) { if ($flag=="false") { $succ = $prec->next_sibling(); // trovato il nodo di primo livello if ($tag_1==($succ->tagname)) { $ii = $succ->child_nodes(); $foglia=$succ->first_child(); // passa in rassegna i nodi di secondo livello foreach ($ii as $fig) if ($flag=="false") { $foglian = $foglia->next_sibling(); if (is_object($foglian)) { if ($tag_2==($foglian->node_name())) { $trovato=$foglian->first_child(); if ((is_object($trovato)) && ($cont==$trovato->node_value())) {$flag="true";} } $foglia=$foglian; } }// foreach if ($flag=="true") { $succ->unlink(); } } $prec=$succ; }// if } //foreach ($i as $figlio) return $dom; }//function canc_nodo ///////////////////////////////////////////restituisce in array il contenuto del nodo tag1 con tag2=cont(chiave ed univoco) function ilnodo($tag_1,$tag_2,$cont) { $dom=$this->dom; // da rivedere negli aggiornamenti $contenuto=array(); $contenut=0; $valori=0; $flag="false"; // $matrice= get_class_methods(get_class($dom)); foreach ($matrice as $metodo) print "funzione : ".$metodo."
"; $root=$dom->document_element(); $i = $root->child_nodes(); $children1 =$root->first_child(); $prec=$children1; // passa in rassegna tutti i nodi di primo livello foreach ($i as $figlio) { if ($flag=="false") { $succ = $prec->next_sibling(); // trovato il nodo di primo livello if ($tag_1==($succ->tagname)) { $ii = $succ->child_nodes(); $foglia=$succ->first_child(); // passa in rassegna i nodi di secondo livello foreach ($ii as $fig) if ($flag=="false") { $foglian = $foglia->next_sibling(); if (is_object($foglian)) { if ($tag_2==($foglian->node_name())) { $trovato=$foglian->first_child(); if ((is_object($trovato)) && ($cont==$trovato->node_value())) {$flag="true";} } $foglia=$foglian; } }// foreach if ($flag=="true") { $foglia=$succ->first_child(); foreach ($ii as $qq) { $foglia = $foglia->next_sibling(); if (is_object($foglia)) { $trov=$foglia->first_child(); if (is_object($trov)) $contenuto[$valori] = $trov->node_value(); $valori++; } } } } $prec=$succ; }// if } //foreach ($i as $figlio) return $contenuto; }//function ilnodo ///////////////////////////////////////////restituisce in array il contenuto degli attributi "att" dei nodi tag2 figli di tag1 function nodo_att($tag_1,$tag_2,$att) { $dom=$this->dom; // da rivedere negli aggiornamenti $contenuto=array(); $contenut=0; $ccc=0; // $matrice= get_class_methods(get_class($dom)); foreach ($matrice as $metodo) print "funzione : ".$metodo."
"; $root=$dom->document_element(); $childrens =$root->child_nodes(); $prec=$root->first_child(); foreach ($childrens as $figlio) { $succ = $prec->next_sibling(); if (is_object($succ)) $nn = $succ->node_name(); if ($tag_1==$nn) { $foglia=$succ->first_child(); $ii = $succ->child_nodes(); foreach ($ii as $fig) { $foglian = $foglia->next_sibling(); if ((is_object($foglian))&&(!($foglian->attributes()==""))) { $contenuto[$ccc]=$foglian->attributes(); $ccc++; } $foglia=$foglian; } } $prec=$succ; } //foreach ($i as $figlio) return $contenuto; }//function nodo_att ///////////////////////////////////////////restituisce in array il contenuto dei nodi tag2 figli di tag1 function nodo($tag_1,$tag_2) { $dom=$this->dom; // da rivedere negli aggiornamenti $contenuto=array(); $contenut=0; // $matrice= get_class_methods(get_class($dom)); foreach ($matrice as $metodo) print "funzione : ".$metodo."
"; $root=$dom->document_element(); $i = $root->child_nodes(); $children1 =$root->first_child(); $prec=$children1; foreach ($i as $figlio) { $succ = $prec->next_sibling(); if ($tag_1==($succ->tagname)) { $foglia=$succ->first_child(); if (is_object($foglia)) { if ($tag_2==($foglia->node_name())) { $trovato=$foglia->first_child(); if (is_object($trovato)) { $contenuto[$contenut]=$trovato->node_value(); $contenut++; } } } $ii = $succ->child_nodes(); foreach ($ii as $fig) { $foglian = $foglia->next_sibling(); if (is_object($foglian)) { if ($tag_2==($foglian->node_name())) { $trovato=$foglian->first_child(); if (is_object($trovato)) { $contenuto[$contenut]=$trovato->node_value(); $contenut++; } } $foglia=$foglian; } } $contenuto[$contenut]="****"; $contenut++; } $prec=$succ; } //foreach ($i as $figlio) return $contenuto; }//function nodo ///////////////////////////////////////////restituisce in array il contenuto dei nodi tag2 figli di tag1 function sottonodo($tag_1,$tag_2) { $dom=$this->dom; // da rivedere negli aggiornamenti $contenut=0; $contenuto=array(); $pagina=array(); // $matrice= get_class_methods(get_class($dom)); foreach ($matrice as $metodo) print "funzione : ".$metodo."
"; $root=$dom->document_element(); $i = $root->child_nodes(); $children1 =$root->first_child(); $prec=$children1; foreach ($i as $figlio) { $succ = $prec->next_sibling(); if ($tag_1==($succ->tagname)) { $foglia=$succ->first_child(); $ii = $succ->child_nodes(); foreach ($ii as $fig) { $foglian = $foglia->next_sibling(); if (is_object($foglian)) { if ($tag_2==($foglian->node_name())) { $trovato=$foglian->first_child(); $iii = $foglian->child_nodes(); $posizione=0; foreach ($iii as $tro) { $trovatino=$trovato->next_sibling(); if (is_object($trovatino)) { //print "figlio=".$trovatino->node_name(); $clone=$trovatino->first_child(); if (is_object($clone)) { $pagina[$posizione]=$clone->node_value(); $posizione++;} } $trovato=$trovatino; }//foreach ($iii as $tro) $contenuto[$contenut]=$pagina; $contenut++; }//if ($tag_2==($foglian->node_name())) $foglia=$foglian; } } $contenuto[$contenut]="****"; $contenut++; } $prec=$succ; } //foreach ($i as $figlio) return $contenuto; }//function sottonodo ///////////////////////////////////////////creazione dell'oggetto DOM: contiene tutto il documento function dom($file,$ritorno) { $this->file=$file; $dom=xmldocfile($file); $this->dom=$dom; $root=$dom->document_element(); $children = domxml_children($root); }//function dom }//class //http://www.php.net/manual/it/ref.domxml.php ?>