PHP domxml PHP4 - XML auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP domxml PHP4 - XML auslesen

    Hallo @all,

    ich sitze vor einem Problem, zu dem ich einfach keine Lösung finde, vielleicht kann mir einer helfen.

    Beschreibung:
    Ich möchte eine XML-Datei auslesen, was auch nicht das Problem ist, der Aufbau meiner XML-Datei erschwert mir das auslesen ACHTUNG ich kann die Datei nicht anders aufbauen.
    Bsp.
    Code:
     
    <date>
    <lang>de_DE</lang>
    <lang>de_AT</lang>
    <lang>pl_PL</lang>
    <lang>sl_SL</lang>
    <detection>/^(([0-9]{1,2})([.])?([0-9]{2})([.])?([0-9]{2,4}))$/</detection>
    <format>/^([0-9]{1,2})[.]?([0-9]{2})[.]?([0-9]{2,4})$/</format>
    <structure>dmy</structure>
    </date>
    <date>
    <lang>iso</lang>
    <lang>en_EN</lang>
    <lang>en_US</lang>
    <lang>en_GB</lang>
    <detection>/^(([0-9]{4})[-]([0-9]{2})[-]([0-9]{2}))$/</detection>
    <format>/^([0-9]{4})[-]([0-9]{2})[-]([0-9]{2})$/</format>
    <structure>ymd</structure>
    </date>
    mein jetziges Script ist:
    PHP-Code:
    function domxml_xmlarray ($branch)
    {
      
    $object = Array ();
      
    $objptr = &$object;
      
    $branch $branch->first_child ();
      while (
    $branch)
      {
        if (!(
    $branch->is_blank_node()))
        {
           switch (
    $branch->node_type())
            {
                case 
    XML_TEXT_NODE:
                 {
                     
    $objptr $branch->node_value();
                     break;
                 }
                case 
    XML_ELEMENT_NODE:
                {
                     
    $objptr =& $object[$branch->node_name()];
                     break;
                }
           }
           if (
    $branch->has_child_nodes ()) {
                
    $objptr domxml_xmlarray ($branch);
           }
        }
        
    $branch $branch->next_sibling ();
      }
      return 
    $object;


    Leider überschreibt mir die Ausgabe das Array (assoziatives Array) als ausgabe bekomme ich z.B.
    Array
    (
    [date] => Array
    (
    [lang] => de_DE
    [detection] => /^(([0-9]{1,2})[ ]([0-9]{2})[ ]([0-9]{2,4}))$/
    [format] => /^([0-9]{1,2})[ ]([0-9]{2})[ ]([0-9]{2,4})$/
    [structure] => dmy
    )
    [anderer inhalt]
    )
    Ich möchte jedoch ein array aufbauen das so aussieht
    array[date][de_DE][description] = ......

    Kann mir einer ein paar informationen geben wie ich das hinbekommen kann? ich habe nur PHP4 und domxml zur verfügung.

    Ich bedanke mich schon jetzt.

    raven

  • #2
    Die Struktur des XML-Dokuments kannst du nicht ändern, also mußt du das Array/Objekt ändern, was deine Funktion zurückgibt.

    Beispiel:
    $xml[0]['date']['de_DE'] = array('description' => $xml[0]['date']['description']);
    unset($xml[0]['date']['description']);

    Kommentar


    • #3
      Danke für die Antwort, daran hatte ich auch schon gedacht, aber kann ich vielleicht den Aufbau der Funktion nicht etwas ändern? um auf das Ergebnis zu kommen:

      $xml[date][de_DE][detection] = bla1
      $xml[date][de_AT][detection] = bla1
      $xml[date][de_CH][detection] = bla2

      Zuletzt geändert von ravener; 15.10.2006, 00:22.

      Kommentar

      Lädt...
      X