Vraag : xml aan serie

ik heb een xmldossier zoals below
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:


	
		Course 1
		
			Exam 1
			2010
			60		
		
		
			Exam 2
			2010
			70		
			
	
	
		Course 2
		
			Exam 3
			2010
			50
		
	


and zet ik dit xml in seriecode zoals om below
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:

objectsIntoArray functie ($arrObjData, $arrData = serie ())
{

	// als de input voorwerp is, zet in serie om
	als (is_object ($arrObjData)) {
		$arrObjData = get_object_vars ($arrObjData);
	}

	als (is_array ($arrObjData)) {
			foreach ($arrObjData als $index => $value) {
				als (is_object ($value) of is_array ($value)) {
					$value = objectsIntoArray ($value); //recursive vraag
				}
				
				$arrData [$index] = $value;
			}
	}

	terugkeer $arrData;
}

$xml = „my.xml“;

$object = simplexml_load_file ($xml);

$arr = objectsIntoArray ($object);

druk „
“;

print_r ($arr);

echo Telling“ .count de „van de Cursus ($arr [cursus]). „
“; foreach ($arr [cursus] als $course_key => $course_value) { echo Telling“ .count de „van het Examen ($arr [cursus] [$course_key] [examen]). „
“; }


now gelieve Cursus 2 te kijken is er een examen maar het drukt me 3. omdat wanneer er één examen is het niet in array
exam [0] serie {

}

it omzet direct examenserie {

}

wegens dat het tellings niet examens het tellingsmarkeringen binnen exam.

how omzet ik this.

thanks.
kan bevestigen

Antwoord : xml aan serie

als u gebruikt zal deze code onder u begrijpen wat ik bedoel. deze code loste mijn probleem op.
[code]
/**
* De Klasse van de Generator XMLToArray
* @author:  DOCTORANDUS IN DE LETTEREN Razzaque Rupom ,
* Moderator, phpResource (LINK1 http://groups.yahoo.com/group/phpresource/LINK1)
* URL: LINK2 http://www.rupom.infoLINK2
* @version:  1.0
* @date 06/05/2006
* Doel: Het creëren van Hiërarchische Serie van Xml- Gegevens
* Bevrijd: Onder GPL
*/

klasse XmlToArray
{
   
    var $xml= '';
   
    /**
    * StandaardAannemer
    * @param $xml = xml gegevens
    * @return niets
    */
   
    functie XmlToArray ($xml)
    {
       $this->xml = $xml;  
    }
   
    /**
    * _struct_to_array ($values, &$i)
    *
    * Dit is toevoegt de inhoud van de terugkeer xml in de serie voor gemakkelijkere verwerking.
    * Recursief, Statisch
    *
    * @access privé
    * @param is de serie $values dit het xmlgegeven in een serie
    * @param is int. $i dit de huidige plaats in de serie
    * @return Serie
    */
   
    _struct_to_array functie ($values, &$i)
    {
        $child = serie ();
        als (isset ($values [$i] [„waarde“])) array_push ($child, $values [$i] [„waarde“]);
       
        terwijl ($i++ <� count="">            schakelaar ($values [$i] [„type“]) {
                geval „cdata“:
                array_push ($child, $values [$i] [„waarde“]);
                onderbreking;
               
                „volledig“ geval:
                    $name = $values [$i] [„markering“];
                    als (! leeg ($name)){
                    $child [$name] = ($values [$i] [„waarde“])? ($values [$i] [„waarde“]): '';
                    als (isset ($values [$i] [„attributen“])) {                  
                        $child [$name] = $values [$i] [„attributen“];
                    }
                }  
              onderbreking;
               
                „open“ geval:
                    $name = $values [$i] [„markering“];
                    $size = isset ($child [$name])? sizeof ($child [$name]): 0;
                    $child [$name] [$size] = $this->_struct_to_array ($values, $i);
                onderbreking;
               
                „dicht“ geval:
                terugkeer $child;
                onderbreking;
            }
        }
        terugkeer $child;
    } //_struct_to_array
   
    /**
    * createArray ($data)
    *
    * Dit is toevoegt de inhoud van de terugkeer xml in de serie voor gemakkelijkere verwerking.
    *
    * @access publiek
    * @param is het koord $data dit het koord van de xmlgegevens
    * @return Serie
    */
    createArray functie ()
    {
        $xml = $this->xml;
        $values = serie ();
        $index = serie ();
        $array = serie ();
        $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] [„markering“];
        $array [$name] = isset ($values [$i] [„attributen“])? $values [$i] [„attributen“]: '';
        $array [$name] = $this->_struct_to_array ($values, $i);
        terugkeer $array;
    } //createArray
   
   
} //XmlToArray
? >

      
            
      
      
                        $xml_data = file_get_contents („XMLFormatPerformanceReport.xml“);
            
            //Creating Instantie van de Klasse
            $xmlObj = nieuwe XmlToArray ($xml_data);
            
            //Creating Serie
            $arrayData = $xmlObj->createArray ();
            
            //Displaying de Serie
            echo „
„;
            print_r ($arrayData);
            ? >      
      

[/code]
Andere oplossingen  
 
programming4us programming4us