Pytanie : xml

i mieć xml kartoteka jak 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 i nawracać ten xml kod jak 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:
funkcja objectsIntoArray ($arrObjData, $arrData = szyk ())
{

	// jeżeli wkład być przedmiot, konwertyta w szyk
	jeżeli (is_object ($arrObjData)) {
		$arrObjData = get_object_vars ($arrObjData);
	}

	jeżeli (is_array ($arrObjData)) {
			foreach ($arrObjData jako $index => $value) {
				jeżeli (is_object ($value) lub is_array ($value)) {
					$value = objectsIntoArray ($value); //recursive wezwanie
				}
				
				$arrData [$index] = $value;
			}
	}

	powrotny $arrData;
}

$xml = "my.xml";

$object = simplexml_load_file ($xml);

$arr = objectsIntoArray ($object);

druk "
";

print_r ($arr);

echo "Kurs Obliczenie" .count ($arr [kurs]). "
"; foreach ($arr [kurs] jako $course_key => $course_value) { echo "Egzamin Obliczenie" .count ($arr [kurs] [$course_key] [egzamin]). "
"; }


now zadawalać spojrzenie Kurs 2 tam  być egzamin ale ono drukować 3. ponieważ gdy tam  być jeden egzamin ono nie nawracać array
exam [(0)] szyk {

}

it konwertyta bezpośrednio egzamin szyk {

}

przez konwertyta ono obliczenie nie egzamin ono obliczenie etykietka wśrodku exam.

how móc i załatwiać this.

thanks.

Odpowiedź : xml

jeżeli ty używać ten kod pod ty rozumieć rozumieć i znaczyć. ten kod rozwiązywać mój problem.
[kod]
/**
* XMLToArray Generator Klasa
* @author:  MA 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
* Purpose: Dane Szyk od XML Dane
* Uwalniać: Pod GPL
*

klasowy XmlToArray
{
   
    var $xml= '';
   
    /**
    * Brak Konstruktor
    * @param $xml = xml dane
    * @return nikt
    *
   
    funkcja XmlToArray ($xml)
    {
       $this->xml = $xml;  
    }
   
    /**
    * _struct_to_array ($values, &$i)
    *
    * Przerób być dodawać the zawartość the powrotny xml w the szyk dla łatwy przerób.
    * Ładunek elektrostatyczny, Ładunek elektrostatyczny
    *
    * @access intymny
    * @param szyk $values szyk być the xml dane w szyk
    * @param int $i szyk być the aktualny lokacja w the szyk
    * @return Szyk
    *
   
    funkcja _struct_to_array ($values, &$i)
    {
        $child = szyk ();
        jeżeli (isset ($values [$i] ["wartość"])) array_push ($child, $values [$i] ["wartość"]);
       
        podczas gdy ($i++ <� count="">            zmiana ($values [$i] ["typ"]) {
                skrzynka "cdata":
                array_push ($child, $values [$i] ["wartość"]);
                przerwa;
               
                skrzynka "uzupełniać":
                    $name = $values [$i] ["etykietka"];
                    jeżeli (! opróżniać ($name)){
                    $child [$name] = ($values [$i] ["wartość"])? ($values [$i] ["wartość"]): '';
                    jeżeli (isset ($values [$i] ["atrybut])) {                  
                        $child [$name] = $values [$i] ["atrybut];
                    }
                }  
              przerwa;
               
                skrzynka "otwierać":
                    $name = $values [$i] ["etykietka"];
                    $size = isset ($child [$name])? sizeof ($child [$name]): (0);
                    $child [$name] [$size] = $this->_struct_to_array ($values, $i);
                przerwa;
               
                skrzynka "zamknięty":
                powrotny $child;
                przerwa;
            }
        }
        powrotny $child;
    } //_struct_to_array
   
    /**
    * createArray ($data)
    *
    * Przerób być dodawać the zawartość the powrotny xml w the szyk dla łatwy przerób.
    *
    * @access jawny
    * @param smyczkowy $data dane być the sznurek the xml dane
    * @return Szyk
    *
    funkcja createArray ()
    {
        $xml = $this->xml;
        $values = szyk ();
        $index = szyk ();
        $array = szyk ();
        $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] ["etykietka"];
        $array [$name] = isset ($values [$i] ["atrybut])? $values [$i] ["atrybut]: '';
        $array [$name] = $this->_struct_to_array ($values, $i);
        powrotny $array;
    } //createArray
   
   
} //XmlToArray
? >

      
            
      
      
                        $xml_data = file_get_contents ("XMLFormatPerformanceReport.xml");
            
            //Creating Przykład the Klasa
            $xmlObj = nowy XmlToArray ($xml_data);
            
            //Creating Szyk
            $arrayData = $xmlObj->createArray ();
            
            //Displaying the Szyk
            echo "
";
            print_r ($arrayData);
            ? >      
      

[/code]
Inne rozwiązania  
 
programming4us programming4us