kostenloser Webspace werbefrei: lima-city


XML zu Objekt: Fehler wegen Wort item in Element ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    guteseiten

    guteseiten hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    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
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    trueweb schrieb:
    guteseiten schrieb:
    foreach ($res_obj->inhalt-item as $myitem) {
    Seit wann sind denn Minus-Zeichen in Variablennamen erlaubt?
  5. Autor dieses Themas

    guteseiten

    guteseiten hat kostenlosen Webspace.

    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
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    guteseiten schrieb:
    also muss die XML gleich so erstellt erden, das kein Element-Name mit Minus-Zeichen ist
    ... beste Alternative wäre wohl _ Unterstrich
    Das musst du gar nicht machen! Du kannst trotzdem auf die Variablen mit dem Minus zugreifen:
    $res = (Array)$res_obj;
    print_r($res['inhalt-item']);

    Du musst also nur einen Typecast zu
    array
    machen, dann bekommst du ein assoziatives Array aus dem Objekt, wo du auch auf die Variaben mit Sonderzeichen zugreifen kannst.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!