Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 14.08.2002, 16:09   #1
seb
TP-Veteran
 
Registriert seit: Jan 2002
seb bringt sich richtig einseb bringt sich richtig ein

XML-Parser-Klasse auf Expat-Basis


Ein simples Scriptchen, welches PHP's event-basierten Expat-Parser verwendet, um den Inhalt eines XML-Dokuments in eine multidimensionale Array-Struktur zu erzeugen.

Die Idee zur Lösung des Problems mit Referenzen und Ebenen-Stack war zugebenermaßen nicht meine - ohne Abgucken von einem andern Script, das folglich nach demselben Prinzip funktioniert, wär ich dadrauf definitiv nicht gekommen....aber mein Code is noch n bisschen kürzer ;D.

Zur Verwendung:

Objekt der Klasse instanzieren und die XML-Datei als Argument übergeben.

Das Array mit den XML-Daten steht dann als $objektname->XMLdata zur Verfügung, Schreibweise ist folgende:

$objektname->XMLdata['ELEMENTNAME'][x]['ELEMENTNAME'][x]['ATTR']/['CDATA']

wobei x für die Nummer des Elements mit dem angegeben Elementnamen auf der jeweiligen Ebene steht.

$objektname->XMLdata['GUESTBOOK'][0]['ENTRY'][3]['CDATA']

würde z.B. die cdata-Sektion (den Inhalt zwischen Öffnen- und Schließen-Tag) das 3. Child-Elements mit dem Tagnamen <entry> innerhalb des des Root-Elements <guestbook> zurückliefern. Alles klar?
Angehängte Dateien
Dateityp: txt class.xml_parser.inc.php.txt (2,4 KB, 341x aufgerufen)
seb ist offline   Mit Zitat antworten


Alt 20.08.2002, 11:27   #2
TP-Supporter
 
Benutzerbild von Hydrax
 
Registriert seit: Jun 2001
Ort: Berlin
Hydrax macht alles soweit korrekt
Hui, nett nett das ganze.
Hätte ich vorher mal gebrauchen können. Ehrlich gesagt habe ich an sowas garnicht gedacht als ich meine XML Parser Sachen geschrieben habe.
Ich mach das alles händisch. Nach XML-Tag gucken. Wenn XML-Tag jener ist, wird jenes Feld vom Array gefüllt
Also alles viel zu viel Aufwand bei mir

Eine Frage zum verständnis hätte ich noch.

Was bewirkt das & bei solchen Aufrufen?
PHP-Code:
$element = & $this->XMLdata
Hab ich da was wichtiges verpasst was man einsetzten kann?

Bye.
__________________
keep looking forward... Hydrax
Hydrax ist offline   Mit Zitat antworten
Alt 20.08.2002, 11:45   #3
Registered User
 
Benutzerbild von Toxical
 
Registriert seit: Dec 2001
Ort: Berlin
Toxical macht alles soweit korrekt
Das
Code:
&
bewirkt, dass
Code:
$element
nur eine referenz(?) auf
Code:
$this->XMLdata
ist, keine Kopie, das heisst wenn du
Code:
$element
veränderst, veränderst du auch
Code:
$this->XMLdata
und umgekehrt, in deinen variablen steht also immer der selbe Inhalt.

Hoffe das war richtoig erkläre, man möge mich gegebenenfalls korrigieren
Toxical ist offline   Mit Zitat antworten
Alt 20.08.2002, 12:59   #4
TP-Supporter
 
Benutzerbild von Hydrax
 
Registriert seit: Jun 2001
Ort: Berlin
Hydrax macht alles soweit korrekt
Ja das wird es auch sein. Jetzt klingelts wieder im Gedächnis bei mir.

Danke!...
__________________
keep looking forward... Hydrax
Hydrax ist offline   Mit Zitat antworten
Alt 20.08.2002, 16:47   #5
seb
TP-Veteran
 
Registriert seit: Jan 2002
seb bringt sich richtig einseb bringt sich richtig ein
Genau

Das Script macht sich die Möglichkeit zu Nutze, um das unter Umständen weit verzweigte Array-Abbild des XML-Elementbaums zu erzeugen.

Dies geschieht per Schleifendurchlauf des Stack-Arrays beim Auftreten jedes neuen Elements, in dem zu jedem Zeitpunkt die Tagnamen der momentan geöffneten Elemente aufgelistet sind (wird ein Element geschlossen, so wird es auch aus dem Stack wieder entfernt).

Der Stack dient praktisch als 'Landkarte', nach der die Referenz auf das Array von einem Element auf das nächste gesetzt wird.

Am Ende des im Stack angegebenen 'Pfades' werden schließlich neue Daten hinzugefügt (Attribute oder Kindelemente) und so das Ergebnis-Array Element für Element erweitert.

Ich find die Vorgehensweise genial einfach, aber wie gesagt...die Idee is geklaut
seb ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Traum-Scripts
XML-Parser-Klasse auf Expat-Basis XML-Parser-Klasse auf Expat-Basis
« Uhrzeit (dynamisch) für DOM-fähige-Browser | [Tutorial] Flash PlugIn Check mit Alternativbild »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:13 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67