MarkusB: SimpleXML Objekt TagNamen auslesen

Hallo wissende,

ich habe ein Problem eine XML Datei mit SimpleXML vollständig auszulesen. Die Datei ist ein LanguageFile und hat folgende Struktur:

<?xml version='1.0' encoding='ISO-8859-1'?>  
<language>  
  <description>  
    <reloadTitle>Aktualisieren</reloadTitle>  
    <fileNewTitle>neue Datei Anlegen</fileNewTitle>  
    <dirNewTitle>neues Verzeichnis Anlegen</dirNewTitle>  
    <uploadTitle>Dateien Hochladen</uploadTitle>  
    ...  
  </description>  
</language>

Die Werte der XML Datei lassen sich mit folgendem Code dynamisch auslesen:

<?php  
if (is_readable('../lang/ger.xml')) {  
    if ($xml = @simplexml_load_file('../lang/ger.xml'))  {  
 foreach($xml->xpath('//language/description') as $child)  {  
    $temp = $child->children();  
    for($i=0;$i<count($temp);$i++)  {  
        echo $temp[$i]."<br>";  
    }  
    // -- Debug start  
    echo "<pre>";  
    print_r($child->children());  
    echo "</pre>";  
    // -- Debug finish  
 }  
    }  
} else {  
    exit('Konnte ger.xml nicht öffnen.');  
}  
?>

Ich habe das Problem das ich auch die Knotennamen benötige, aber nicht weis wie ich diese Auslesen kann. Im SimpleXMLObjekt $child->children() werden die Knotennamen richtig angezeigt. Ich habe momentan irgendwie eine Logikblockade. Könnte mir jemand bitte den Beispielcode ergänzen, bitte.

danke schön
Markus

  1. echo $begrüßung;

    Ich habe das Problem das ich auch die Knotennamen benötige, aber nicht weis wie ich diese Auslesen kann.

    Das PHP-Handbuch führt unter den SimpleXML Functions unter anderem auch SimpleXMLElement->getName() auf. Das scheint mir deine Aufgabe zu erfüllen.

    echo "$verabschiedung $name";

    1. Das PHP-Handbuch führt unter den SimpleXML Functions unter anderem auch SimpleXMLElement->getName() auf. Das scheint mir deine Aufgabe zu erfüllen.
      ...

      danke für die schnelle Antwort, mit dieser Funktion habe ich auch schon experimentiert, aber leider nicht den Erfolg gehabt (was wohl an meinder fehlerhaften Anwendung liegt, sorry)

      if (is_readable('../lang/ger.xml')) {  
          if ($xml = @simplexml_load_file('../lang/ger.xml'))  {  
        foreach($xml->xpath('//language/description') as $child)  {  
         $temp = $child->children()->getName();  
         for($i=0;$i<count($temp);$i++)  {  
             echo $temp[$i]."<br>";  
         }  
        }  
       }  
      ...
      

      als Ausgabe kommt hier bei mir nur das Zeichen r

      Könntest Du mir bitte nochmal auf die Sprünge helfen? Vielen Dank für Deine investierte Zeit.

      Markus

      1. Hi,

        if (is_readable('../lang/ger.xml')) {

        if ($xml = @simplexml_load_file('../lang/ger.xml'))  {
          foreach($xml->xpath('//language/description') as $child)  {
           $temp = $child->children()->getName();
           for($i=0;$i<count($temp);$i++)  {
               echo $temp[$i]."<br>";
           }
          }
        }
        ...

        
        > als Ausgabe kommt hier bei mir nur das Zeichen r  
          
        Es moechte sich mit var\_dump ansehen, was sein $temp enthaelt.  
          
        MfG ChrisB  
          
        
        -- 
        „This is the author's opinion, not necessarily that of Starbucks.“
        
        1. Danke Euch beiden für die Hilfestellung, mit dem Konstrukt bekomme ich alle benötigten Informationen:

            
          foreach($xml->xpath('//language/description') as $child)  {  
            $temp = $child->children();  
            for($i=0;$i<count($temp);$i++)  {  
              echo $temp[$i]."<br>";  
            }  
            
            foreach($child->children() as $a)  {  
              echo $a->getName()."<br>";  
            }  
          }
          

          danke und baldigen Feierabend
          Markus