Andreas-Lindig: wann ruft der Parser 'expat' Funktionen auf?

Beitrag lesen

Hallo Forum,

Ich versuche gerade eine XML-Datei zu parsen, mit expat. Schön - geht auch, aber ich verstehe das Vorgehen dieses Parsers nicht, besonders wann er den Handler für Textdaten aufruft.

//XML-Datei
<?xml version="1.0" encoding="UTF-8"?>
<sect1>
   <title>
      Absatztitel
   </title>

<para>
      Absatztext
      neue Zeile
   </para>
</sect1>

//Handler für Daten ( CDATA ) setzen
xml_set_character_data_handler( $parser, "daten" );

//Funktion "daten()"
function daten( $parser, $data )
{
   echo $data;
}

für einfache Beispiele funktioniert das soweit. Aber, wenn ich z.B. Zeilenumbrüche in der XML-Datei mit nl2br() umsetzen will:

function daten( $parser, $data )
{
   echo nl2br($data);
}

stelle ich fest, daß diese Funktion nicht etwa einmal für "Absatztitel" und einmal für "Absatztext" aufgerufen wird, sondern andauernd. Z.B. auch zwischen "</title>" und "<para>" und bei Leerzeichen im Text usw.

Keine Ahnung, wie bringe ich das Teil dazu den Text innerhalb zweier zusammengehöriger Tags als _ein_ Ganzes aufzufassen?

Gruß, Andreas

--
<img src="http://was-ist-das.andreas-lindig.de/was_ist_das_fetzen.jpg" border="0" alt="">
http://was-ist-das.andreas-lindig.de