==================- \ 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) */ ////////////////////////////////////////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"; 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 att($children) { $contenuto = array(); for ($s=0; $scontent; }// for return $children1; }// function att */ ////////////////////////////////////////ritorna il contenuto di tutti i tag_2 di secondo livello, figli del tag_1 di primo livello function figlio_multi($children,$tag_1, $tag_2) { $contenuto=""; 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 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(); $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(); else $contenuto[$contenut]="***"; $contenut++; } $foglia=$foglian; } } } $prec=$succ; } //foreach ($i as $figlio) }//function nodo ///////////////////////////////////////////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 ?>