Mario Ragucci: XML und leere Felder

Hallo,

folgendes Problem:
<entity>
<field key="C1" caption="deadline" type="Duration">00:01</field>
</entity>
<entity>
<field key="C1" caption="deadline" type="Duration"></field>
</entity>
<entity>
<field key="C1" caption="deadline" type="Duration">01:10</field>
</entity>

Wenn ich o.g. xml-Daten parse und mir die Werte in ein Array einlesen will wird mein Array nur mit 2 Werten gefüllt, und zwar mit 00:01 und 01:10.
Der mittlere Wert wird einfach übergangen, ich habe also keinen "leeren" Eintrag in meinem Array (was aber gewünscht ist!).

Ich habe folgendes im character_handler des xml-parsers versucht, leider ohne Erfolg:

if($data == '')
{
 $duration[] = "leer";
}
else
{
 $duration[]  = $data;
}

Hat jemand eine Idee, was man hier machen kann?

Danke und Gruß,

Mario

  1. Moin Mario,

    diese Thema hattest Du bereits hier:
    https://forum.selfhtml.org/?t=113189&m=717882

    Behandle es bitte auch dort weiter.

    regds
    Mike© (DHL)

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
  2. Wenn ich o.g. xml-Daten parse und mir die Werte in ein Array einlesen will wird mein Array nur mit 2 Werten gefüllt, und zwar mit 00:01 und 01:10.
    Der mittlere Wert wird einfach übergangen, ich habe also keinen "leeren" Eintrag in meinem Array (was aber gewünscht ist!).

    Ich habe folgendes im character_handler des xml-parsers versucht, leider ohne Erfolg:

    if($data == '')
    {
    $duration[] = "leer";
    }
    else
    {
    $duration[]  = $data;
    }

    Hat jemand eine Idee, was man hier machen kann?

    der sax-parser arbeitet ereignisorientiert.
    wenn kein cdata vorhanden ist, kann auch kein cdata ereignis ausgelöst werden.

    dann mußt du schon selbst das fehlen von cdata feststellen. entweder beim öffnenden tag bereits auf LEER setzen und mit vorhandenem cdata überschreiben, oder was schlechter ist, beim schließen des tags nachprüfen.