XML zu Objekt: Fehler wegen Wort item in Element ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
code
datei
einzelne items
einzelnen inhalte
element
erstellt erden
fehlermeldung
funktionieren
info
inhalt
objekt
re
subtraktion
tag
text
url
wort
zeichen
zugreifen
-
Hallo
ich lese mit simplexml_load_file eine XML-tag/re">ref="/tag/datei">Datei aus
die XML Datei "meinedaten.xml" sieht (vom Prinzip her) so aus:
<?xml version="1.0" encoding="utf-8"?> <inhalte> <inhalt-item> <id>123</id> <name>Blablabla</name> <info>Text text Text text ...</info> </inhalt-item> <inhalt-item> <id>456</id> <name>Hullahup</name> <info>Oink Oink Eeek Eeek ...</info> </inhalt-item> </inhalte>
PHP-Code:
$source = 'meinedaten.xml'; $res_obj = simplexml_load_file($source); print "<pre>\n"; print_r($res_obj); print "</pre>\n";
und als Ausgabe (Objekt) bekomme ich dann:
SimpleXMLElement Object ( [inhalt-item] => Array ( [0] => SimpleXMLElement Object ( [id] => 123 [name] => Blablabla [info] => Text text Text text ... ) [1] => SimpleXMLElement Object ( [id] => 456 [name] => Hullahup [info] => Oink Oink Eeek Eeek ... ) } )
wenn ich jetzt nur auf das Array (innerhalb 'inhalt-item' Objekt) zugreifen will
$data_arr = $res_obj->inhalt-item;
... dann kommt als Fehlermeldung:
Notice: Use of undefined constant item - assumed 'item' in ....
und ich kann mir das Array (innerhalb des Haupt-Objekts) nicht in eine Variable ablegen
diese Fehlermeldung kommt auch,
wenn ich in einer foreach-Schleife auf das Array zugreifen will:
foreach ($res_obj->inhalt-item as $myitem) { print "<pre>\n"; print_r($myitem); print "</pre>\n"; }
darf also in der XML das Element für einzelne Items nicht das Wort "item" enthalten ??
oder liegt es am Minus-Zeichen ?
würde es funktionieren, wenn ohne das Minus-Zeichen, also <inhaltitem>...</inhaltitem> ???
würde es funktionieren, wenn anstatt Minus Unterstrich, also <inhalt_item>...</inhalt_item> ???
... oder was läuft hier falsch ???
PLS HELP .. Danke!
Beitrag zuletzt geändert: 6.6.2012 15:00:36 von guteseiten -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
guteseiten schrieb:
$source = 'meinedaten.xml'; $res_obj = simplexml_load_file($source); print "<pre>\n"; print_r($res_obj-); print "</pre>\n";
Um mit SimpleXML den Code auszugeben, musst du Methode asXML() verwenden:
print_r($res_obj->asXML());
guteseiten schrieb:
foreach ($res_obj->inhalt-item as $myitem) { print "<pre>\n"; print_r($myitem); print "</pre>\n"; }
$myitem ist hier nicht der Inhalt von $myitem, sondern das Objekt "myitem". Um auf den Inhalt des Tags zu kommen, verwende:
print_r($myitem[0]);
(Edit: Code-Tag hinzugefügt)
Beitrag zuletzt geändert: 6.6.2012 15:18:21 von trueweb -
trueweb schrieb:
$myitem ist hier nicht der Inhalt von $myitem, sondern das Objekt "myitem"
das ist schon klar, deshalb ja auch print_r($myitem);
Wie ich (grundsätzlich) auf die einzelnen Inhalte komme ist nicht das Problen
das problem ist, das ich auf das übergeordnete Objekt garnicht zugreifen kann,
weil der Element-Name in XML (bzw. dann der Objekt-Name) ein - (Minus) Zeichen entält ... inhalt-item
hackyourlife schrieb:
Seit wann sind denn Minus-Zeichen in Variablennamen erlaubt?
also liegt's am - (Minus Zeichen) ...nicht am Wort item (könnte ja ein reserviertes Wort sein)
deshalb "denkt " PHP ja auch, das item eine Konstante wäre
(und will das von $res_obj->inhalt abziehen ... "Minus" rechnen (Subtraktion)
also muss die XML gleich so erstellt erden, das kein Element-Name mit Minus-Zeichen ist
... beste Alternative wäre wohl _ Unterstrich
Beitrag zuletzt geändert: 6.6.2012 16:13:54 von guteseiten -
guteseiten schrieb:
Das musst du gar nicht machen! Du kannst trotzdem auf die Variablen mit dem Minus zugreifen:
also muss die XML gleich so erstellt erden, das kein Element-Name mit Minus-Zeichen ist
... beste Alternative wäre wohl _ Unterstrich$res = (Array)$res_obj; print_r($res['inhalt-item']);
Du musst also nur einen Typecast zu
machen, dann bekommst du ein assoziatives Array aus dem Objekt, wo du auch auf die Variaben mit Sonderzeichen zugreifen kannst.array
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage