| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Sep 2002 Ort: latente matrix
Beiträge: 119
| XML 2 Object
Hallo Jungs und Mädels, ich hab leider einen kleinen Hänger, was das umsetzten meines Gedankenganges angeht. Ich möchte folgendes durch eine rekursiv aufgerufende Methode erreichen: Beispiel 1: XML-Datei PHP-Code: Diese XML-Datei möchte ich in folgender Struktur als Object erhalten (was momentan schon möglich ist): PHP-Code: Beispiel 2: XML-Datei PHP-Code: Diese XML-Datei möchte ich in folgender Struktur als Object erhalten: PHP-Code: Leider scheitere ich an diesem Vorhaben, mit einer Methode zwei verschiedene XML-Strukturen ein- und korrekt auszulesen. Folgender Code ist vorhanden: Derzeitige Methode zum XML-Parsen PHP-Code: Aufruf der Methode: PHP-Code: Schlussendlich wäre ich sehr glücklich, wenn mir jemand bei diesem Vorhaben helfen könnte. Vielen Dank, Robert Engelhardt
__________________ freiheit ist ein mythos Geändert von womstar (07-12-2006 um 23:49 Uhr) |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
die 'mutter' aller rekursiven xml-parser http://www.seibsprogrammladen.de/fra...lgorithmen/XML XML parsen _xml.nodeName kann man ja auch unbekannter weisse verarbeiten und alle attribute mit je einem for (var a in _xml.attributes) { ...
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Sep 2002 Ort: latente matrix
Beiträge: 119
|
Danke für Deine Antwort. Diese Sache habe ich mir auch schon zu Gemüte geführt. Mich irritierte aber diese Zeile: case 'a': case 'b': case 'c': Welche ja meines achtens vorbestimmte Node-Namen verarbeitet. Aber Du meinst, dies kann auch unbestimmt geschehen?
__________________ freiheit ist ein mythos Geändert von womstar (07-12-2006 um 23:59 Uhr) |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
ist ja auch nur ein beispiel und deshalb schrieb ich ja auch extra: _xml.nodeName kann man ja auch unbekannter weisse verarbeiten schmeiss deinen blick z.b. eine etage tiefer zu XML zu Array. lass da das switch weg. zumindestens case 'a': case 'b': case 'c': durch default: ersetzen, bzw. ergänzen. je nach belieben. ist eine möglichkeit, eine von vielen. letztendes ist ein XML halt kein array und ein array kein XML. sonst wär's ja das selbe ;-) die unterschiede in den griff zu bekommen, ist jedermanns/-fraus eigene sache.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (08-12-2006 um 00:11 Uhr) |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Sep 2002 Ort: latente matrix
Beiträge: 119
|
Mh .. kannst Du mir ein Beispiel zeigen, welches die Object-Struktur besitzt die ich versuche zu erreichen? Die Struktur die ich mit Deiner Funktion erreiche ist momentan noch sehr chaotisch.
__________________ freiheit ist ein mythos |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
ungetestet, aber so in etwa Code: function fXML_parsen(_xml) {
do {
switch (_xml.nodeName) {
case 'channel' :
_aktuell = [];
fXML_parsen(_xml.firstChild);
rss.push(_aktuell);
break;
case 'webMaster' :
_items = [];
fXML_parsen(_xml.firstChild);
_aktuell[_xml.nodeName] = _items;
break;
case 'item' :
_items.push(_xml.firstChild.nodeValue);
break;
default :
_aktuell[_xml.nodeName] = _xml.firstChild.nodeValue;
break;
}
} while (_xml=_xml.nextSibling);
}
//
var rss = [];
fXML_parsen(_xml.firstChild); ach so, das 2. xml entweder die tags dort umbenennen title & link wären ja sonst doppelt. ich bevorzuge eindeutige namen. oder dafür eine neue routine erstellen, wenn item if (_xml.hasChildNodes()) { ... hat
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (08-12-2006 um 01:15 Uhr) |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Sep 2002 Ort: latente matrix
Beiträge: 119
|
Vielen Dank! Vielleicht sollte ich aber erwähnen, dass es mir um eine möglichst flexible Methode geht um XML-Datein einzulesen. Sprich, ich möchte nirgends im Code Node-Namen definieren. Also eine Methode, die unabhängig ist von der vorliegenden Struktur. Beispiel: PHP-Code: PHP-Code: Wie gesagt, meine obere Methode macht dies schon, aber nur bist zum ersten Beispiel.
__________________ freiheit ist ein mythos Geändert von womstar (08-12-2006 um 01:02 Uhr) |
| | |
| | #8 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
ich denke, ich habe dir jetzt genügend beispiele gegeben. in die eine so wie in die andere richtung. und die variante in #6 kommt auch mit einem minimum an vorgaben aus. wenn du das xml vollkommen wertfrei einliesst, dann 'weiss' deine programmierung nachher auch nicht, was sie wo anzeigen soll. zum glück gibt es keine funktion für alles. sonst wären wir programmierer ruckzuck arbeitslos ;-)
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (08-12-2006 um 01:16 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |