Mailinglisten-Archive | 
> wo hast Du die Entities definiert? Wenn Du eine externe DTD 
> verwendest, 
> könnte es sein, dass das gar nicht geht.
> Meine eigene Parserklasse - XML-Line- sollte die Entities richtig 
> einsetzten, sobald die DTD innerhalb des XML-Dokuments erfolgt.
> Eigentlich sollte das mit der PEAR-Klasse ebenfalls gehen, 
> wenn Du die 
> Ausgabe der entsprechenden Handler in einem Buffer speicherst 
> und diesen 
> hinterher ausgibst.
ok.. sag ich es mal anders:
class parser extends XML_Parser
{
  var $cdata_stack = array();
  function parser($xml)
  {
	$this->folding = false;
	parent::XML_Parser();
	$r = $this->parseString($xml)
	if (PEAR::isError($r)) die("parsing failed: ".$r->toString());
  }
  function startHandler($xp,$tag,$attr)
  {
	$this->cdata_stack[] = "";
  }
  function endHandler($xp,$tag)
  {
	$data = array_pop($this->cdata_stack);
  }
  function cDataHandler($xp,$data)
  {
      $this->cdata[count($this->cdata)-1] .= $data;
  }
  function defaultHandler($xp,$data)
  {
	$this->cDataHandler($xp,$data);
  }
}
das xml dokument ist ein xhtml dokument und komplett valide (html und
xml valide!).
nun habe ich folgendes:
<!DOCTYPE html ...>
<?xml version="1.0" ?>
<html>
  <head>
    <title>title</title>
  </head>
  <body>
    <img src="xxx" title="schöner text" />
  </body>
</html>
das eigentlich parsen ist kein problem... 
das img tag enthaelt ein title attribut. dieses attribut enthaelt ein
entity ö.
im startHandler() bekomme ich dann fuer das img tag folgendes:
$tag == 'img'
$attr['src'] == 'xxx'
$attr['title'] == 'schner text'
...
der defaultHandler() bekommt auf jeden fall VOR/NACH (nicht genau
geprueft) dem aufruf von startHandler() das ö in $data.
damit sind die informationen komplett zerstoert... :(
gruss
thomas
    php::bar PHP Wiki - Listenarchive