==================-
\
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("&#8217;","\'",$var);
$var=str_replace("&#8220;","\"",$var);
$var=str_replace("&#8221;","\"",$var);
$var=str_replace("&#8211;","-",$var);
$var=str_replace("&#8264;","",$var);
$var=str_replace("ò","o'",$var);
$var=str_replace("ù","u'",$var);
$var=str_replace("è","e'",$var);
$var=str_replace("È","E\'",$var);
$var=str_replace("ì","i'",$var);
$var=str_replace("à","a'",$var);
$var=str_replace("é","e'",$var);
$var=str_replace("°","°",$var);
$var=str_replace(""","\'",$var);
$var=str_replace("quot;","\'",$var);
$var=str_replace("<","-",$var);
$var=str_replace(">","-",$var);
$var=str_replace("&#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 "
";
}
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
?>