dedlfix: xmlparser - elemente in ein array bringen

Beitrag lesen

Hi!

Ich lese gerade eine xml mit dem XML Parser ein. Dabei versuche ich alle elemente (<port>) in ein array zu bringen.

case 'PORT':

$this->route[] .= htmlentities($this->value, ENT_QUOTES, 'UTF-8');
break;


>   
> dieses Array stellt die route eines schiffes da. Bevor ich es abspeichere fühge ich das array in einen string zusammen.  
>   
> `$this->route = implode(' <img src=\"image.png\" /> ', $route);`{:.language-php}  
  
Inwieweit hängen diese beiden Code-Stücke zusammen - im ersten befüllst du $this->route, im zweiten liest du $route aus - und wie sollen sie ein Problem nachvollziehbar machen, wenn darin Variablen vorkommen, die irgendwo anders mit Werten belegt wurden? Zusatzfrage: Welche Funktion erfüllt htmlentities() an dieser Stelle?  
  

> eigenartiger weise wird das bild aber auch bei Umlauten und anderen Sonderzeichen eingefügt.  
  
Nun, dann wäre als erstes eine Kontrollausgabe fällig. In der würdest du sehen, dass die betreffende Stelle zwei Einträge in $this->route belegt. Nun könnte man auf die Idee kommen, dass schon beim Einfügen in das Array zwei Aufrufe erfolgen. Und wie beziehungsweise in welcher Situation wird die Einfügestelle aufgerufen? Wenn der XML-Parser die Handler-Callback-Funktion aufruft. Daraus könnte man schließen, dass Entitys und NCRs anders behandelt werden als normaler Text. Also müsste man mal in dieser Richtung das PHP-Handbuch befragen - speziell: alle Handler anschauen und sich kurze XML-Text nachbilden, an denen man das Verhalten des XML-Parsers probieren und studieren kann.  
  
  
Lo!