Questione : xml da allineare

ho una lima del xml come il class= " lineNumbers " >
1 del >


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

and di
1 del >

funzione objectsIntoArray ($arrObjData, $arrData = allineamento ())
{

	// se l'input è oggetto, convertito nell'allineamento
	se (is_object ($arrObjData)) {
		$arrObjData = get_object_vars ($arrObjData);
	}

	se (is_array ($arrObjData)) {
			foreach ($arrObjData come => $value di $index) {
				se (is_object ($value) o is_array ($value)) {
					$value = objectsIntoArray ($value); chiamata di //recursive
				}
				
				$arrData [$index] = $value;
			}
	}

	$arrData di ritorno;
}

$xml = “my.xml„;

$object = simplexml_load_file ($xml);

$arr = objectsIntoArray ($object);

stampa “
„;

print_r ($arr);

eco “conteggio„ .count ($arr [corso] di corso). “
„; foreach ($arr [corso] come => $course_value di $course_key) { eco “conteggio„ .count ($arr [corso] [$course_key] [esame] dell'esame). “
„; } il class= di


now osservano prego il corso 2 là è un esame ma lo stampa 3. perché quando ci è un esame non lo converte in 0] di allineamento del array
exam [{

} del

it dei convertiti

di allineamento dell'esame direttamente {

} a causa di quello esami di conteggio non esso modifiche di conteggio all'interno di exam.

how può io ripara this.

thanks. class= del

Risposta : xml da allineare

se usate questo codice sotto voi capirà che cosa significo. questo codice ha risolto il mio problema.
[codice]
/**
* Codice categoria del generatore di XMLToArray
* @author:  MA Razzaque Rupom ,
* Moderatore, phpResource (LINK1 http://groups.yahoo.com/group/phpresource/LINK1)
* URL: LINK2 http://www.rupom.infoLINK2
* @version:  1.0
* @date 06/05/2006
* Scopo: Generazione dell'allineamento gerarchico dai dati di XML
* Liberato: Nell'ambito di GPL
*/

codice categoria XmlToArray
{
   
    varietà $xml= '';
   
    /**
    * Costruttore di difetto
    * @param $xml = dati del xml
    * @return nessun
    */
   
    funzione XmlToArray ($xml)
    {
       $this->xml = $xml;  
    }
   
    /**
    * _struct_to_array ($values, &$i)
    *
    * Ciò è aggiunge il contenuto del xml di ritorno nell'allineamento per l'elaborazione più facile.
    * Ricorsivo, statico
    *
    * @access riservati
    * l'allineamento $values del @param questo è i dati del xml in un allineamento
    * il @param il int $i questo è la posizione corrente nell'allineamento
    * allineamento del @return
    */
   
    funzione _struct_to_array ($values, &$i)
    {
        $child = allineamento ();
        se (isset ($values [$i] [“valore„])) array_push ($child, $values [$i] [“valore„]);
       
        mentre (interruttore <� count="">            di $i++ ($values [$i] [“tipo„]) {
                caso “cdata„:
                array_push ($child, $values [$i] [“valore„]);
                rottura;
               
                il caso “completa„:
                    $name = $values [$i] [“modifica„];
                    se (! svuotare ($name)){
                    $child [$name] = ($values [$i] [“valore„])? ($values [$i] [“valore„]): '';
                    se (isset ($values [$i] [“attributi„])) {                  
                        $child [$name] = $values [$i] [“attributi„];
                    }
                }  
              rottura;
               
                il caso “si apre„:
                    $name = $values [$i] [“modifica„];
                    $size = isset ($child [$name])? sizeof ($child [$name]): 0;
                    $child [$name] [$size] = $this->_struct_to_array ($values, $i);
                rottura;
               
                caso “vicino„:
                $child di ritorno;
                rottura;
            }
        }
        $child di ritorno;
    } //_struct_to_array
   
    /**
    * createArray ($data)
    *
    * Ciò è aggiunge il contenuto del xml di ritorno nell'allineamento per l'elaborazione più facile.
    *
    * @access pubblici
    * la stringa $data del @param questo è la serie dei dati del xml
    * allineamento del @return
    */
    funzione createArray ()
    {
        $xml = $this->xml;
        $values = allineamento ();
        $index = allineamento ();
        $array = allineamento ();
        $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] [“modifica„];
        $array [$name] = isset ($values [$i] [“attributi„])? $values [$i] [“attributi„]: '';
        $array [$name] = $this->_struct_to_array ($values, $i);
        $array di ritorno;
    } //createArray
   
   
} //XmlToArray
? >

      
            
      
      
                        $xml_data = file_get_contents (“XMLFormatPerformanceReport.xml„);
            
            Caso di //Creating del codice categoria
            $xmlObj = nuovo XmlToArray ($xml_data);
            
            Allineamento di //Creating
            $arrayData = $xmlObj->createArray ();
            
            //Displaying l'allineamento
            eco “
“;
            print_r ($arrayData);
            ? >      
      

[/code]
Altre soluzioni  
 
programming4us programming4us