Question : xml à ranger

j'ai un dossier de xml comme le class= les " lineNumbers " >
1 de >
< ? encoding= " UTF-8 " du version= " 1.0 " de xml ? >

	
		Course 1
		
			Exam 1
			2010
			60		
		
		
			Exam 2
			2010
			70		
			
	
	
		Course 2
		
			Exam 3
			2010
			50
		
	
le class= >


and de
1 de >

fonction objectsIntoArray ($arrObjData, $arrData = rangée ())
{

	// si l'entrée est objet, converti dans la rangée
	si (is_object ($arrObjData)) {
		$arrObjData = get_object_vars ($arrObjData) ;
	}

	si (is_array ($arrObjData)) {
			foreach ($arrObjData comme => $value de $index) {
				si (is_object ($value) ou is_array ($value)) {
					$value = objectsIntoArray ($value) ; appel de //recursive
				}
				
				$arrData [$index] = $value ;
			}
	}

	$arrData de retour ;
}

$xml = « my.xml » ;

$object = simplexml_load_file ($xml) ;

$arr = objectsIntoArray ($object) ;

copie « 
 » ;

print_r ($arr) ;

écho compte » .count ($arr [cours] « de cours). « 
 » ; foreach ($arr [cours] comme => $course_value de $course_key) { écho compte » .count ($arr [cours] [$course_key] [examen] « d'examen). « 
 » ; } le class= de


now regardent svp le cours 2 là est un examen mais il m'imprime 3. parce que quand il y a un examen il pas le convertit en 0] de rangée de l'array
exam [{

} du

it de convertis

de rangée d'examen directement {

} en raison de celui des examens de compte pas il des étiquettes de compte à l'intérieur d'exam.

how peut moi fixent this.

thanks. class= de

Réponse : xml à ranger

si vous employez ce code au-dessous de vous comprendra ce que veux dire je. ce code a résolu mon problème.
[code]
/**
* Classe de générateur de XMLToArray
* @author :  MA Razzaque Rupom ,
* Modérateur, phpResource (LINK1 http://groups.yahoo.com/group/phpresource/LINK1)
* URL : LINK2 http://www.rupom.infoLINK2
* @version :  1.0
* @date 06/05/2006
* But : Création de la rangée hiérarchique des données de XML
* Libéré : Sous le GPL
*

classe XmlToArray
{
   
    variété $xml= '' ;
   
    /**
    * Constructeur de défaut
    * @param $xml = données de xml
    * @return aucun
    *
   
    fonction XmlToArray ($xml)
    {
       $this->xml = $xml ;  
    }
   
    /**
    * _struct_to_array ($values, &$i)
    *
    * C'est ajoute le contenu du xml de retour dans la rangée pour un traitement plus facile.
    * Récursif, statique
    *
    * @access privés
    * la rangée $values de @param ceci est les données de xml dans une rangée
    * le @param international $i ceci est l'endroit courant dans la rangée
    * rangée de @return
    *
   
    fonction _struct_to_array ($values, &$i)
    {
        $child = rangée () ;
        si (isset ($values [$i] [« valeur »])) array_push ($child, $values [$i] [« valeur »]) ;
       
        tandis que (commutateur <� count="">            de $i++ ($values [$i] [« type »]) {
                cas « cdata » :
                array_push ($child, $values [$i] [« valeur »]) ;
                coupure ;
               
                le cas « accomplissent » :
                    $name = $values [$i] [« étiquette »] ;
                    si (! vider ($name)){
                    $child [$name] = ($values [$i] [« valeur »]) ? ($values [$i] [« valeur »]) : '' ;
                    si (isset ($values [$i] [« attributs »])) {                  
                        $child [$name] = $values [$i] [« attributs »] ;
                    }
                }  
              coupure ;
               
                le cas « s'ouvrent » :
                    $name = $values [$i] [« étiquette »] ;
                    $size = isset ($child [$name]) ? sizeof ($child [$name]) : 0 ;
                    $child [$name] [$size] = $this->_struct_to_array ($values, $i) ;
                coupure ;
               
                cas « étroit » :
                $child de retour ;
                coupure ;
            }
        }
        $child de retour ;
    } //_struct_to_array
   
    /**
    * createArray ($data)
    *
    * C'est ajoute le contenu du xml de retour dans la rangée pour un traitement plus facile.
    *
    * @access publics
    * la corde $data de @param ceci est la corde des données de xml
    * rangée de @return
    *
    fonction createArray ()
    {
        $xml = $this->xml ;
        $values = rangée () ;
        $index = rangée () ;
        $array = rangée () ;
        $parser = xml_parser_create () ;
        xml_parser_set_option ($parser, XML_OPTION_SKIP_WHITE, 1) ;
        xml_parser_set_option ($parser, XML_OPTION_CASE_FOLDING, 0) ;
        xml_parse_into_struct ($parser, $xml, $values, $index) ;
        xml_parser_free ($parser) ;
        $i = 0 ;
        $name = $values [$i] [« étiquette »] ;
        $array [$name] = isset ($values [$i] [« attributs »]) ? $values [$i] [« attributs »] : '' ;
        $array [$name] = $this->_struct_to_array ($values, $i) ;
        $array de retour ;
    } //createArray
   
   
} //XmlToArray
? >

      
            
      
      
                        $xml_data = file_get_contents (« XMLFormatPerformanceReport.xml ») ;
            
            Exemple de //Creating de la classe
            $xmlObj = nouveau XmlToArray ($xml_data) ;
            
            Rangée de //Creating
            $arrayData = $xmlObj->createArray () ;
            
            //Displaying la rangée
            écho « 
« ;
            print_r ($arrayData) ;
            ? >      
      

[/code]
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us