Ergebnis 1 bis 5 von 5

Thema: XML mit PHP parsen -> Wie?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    [font=Tahoma]Zunächst dein Code in XML...
    [/font][font=Tahoma]
    Code:
    <item>
         <user>abc</user>
         <banned>1</banned>
         <by>hge</by>
         </item>
         
         [/font][font=Tahoma]<item>
         <user>zte</user>
         <banned>0</banned>
         <by>---</by>
         </item>[/font][font=Tahoma]
    (hab mich jetzt mal auf 2 beschränkt - will auch gleich schlafen )

    PHP-Code:
         // Zuerst holen wir uns den Inhalt von xml.xml
         
    $xml file_get_contents('./xml.xml');
         
         
    // Dann erstellen wir uns ein Array - für jedes "<item>" einen Key
         
    $xml str_replace('</item>'''$xml);
         
    $array explode('<item>'$xml);
         unset(
    $array['0']);
         
    /*
         // Das Array sieht jetzt so aus: 
         [1] => "<user>abc</user><banned>1</banned><by>hge</by>"
         [2] => "<user>zte</user><banned>0</banned><by>---</by>"
         */
         
         // Das gleiche Spielchen machen wir jetzt für die einzelnen "Unterpunkte" user, banned & by
         
    foreach ($array as $key => $string)
         {
             
    $string str_replace('</user>'''$string);
             
    $string str_replace('</banned>'''$string);
             
    $string str_replace('</by>'''$string);
             
         
    // Wir exploden nun von unten nach oben und verwenden jeweils den "Reststring" für die nächsten explodes
             
    $by explode('<by>'$string);
             
    $banned explode('<banned>'$by['0']);
             
    $user explode('<user>'$banned['0']);
         
             
    // Jetzt basteln wir uns einfach ein Array zusammen, dass die gewünschten Infos enthält
             
    $result[] = array('user' => $user['1'], 'banned' => $banned['1'], 'by' => $by['1']);
         } 
    Ausgabe von print_r($result):
    Code:
    A[/font]rray
         (
            [0] => Array
                (
                    [user] => abc
                    [banned] => 1
                    [by] => hge
                )
        
            [1] => Array
                (
                    [user] => zte
                    [banned] => 0
                    [by] => ---
                )
        )
    [font=Tahoma]
    Das ganze ließe sich jetzt per RegEx verfeinern, wenn man z.B. die einzelnen Keys nicht kennt o.Ä. Dazu bin ich aber jetzt zu müde

    Na, ich hoffe, du hast so halbwegs verstanden, was mein Script macht Ansonsten nachfragen


    PS: Ich hab mal alles per str_replace() & explode() gemacht, weil ich für alles andere (RegEx), wie gesagt, zu müde bin...

    Grüße,
    CC

    [/font]

    Geändert von -CC- (19.12.2004 um 04:49 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •