Hallo,
bei XML ist es ja so, dass es wohlgeformt sein muss. D.h. jedes geöffnete Tag muss auch geschlossen werden. Soweit eigentlich kein Problem. Allerdings stolpere ich gerade über einfach < und > im normalen Text ...
Fangen wir von vorne an: Ich baue mir mit Hilfe von DOMImplementation von PHP ein XML-Dokument in UTF-8. Damit auch jeder Inhalt der erstellten XML-Tags akzeptiert werden, muss ich sie maskieren, mittels htmlentites (sorry, ein anderer Weg ist mir grad nicht eingefallen). Kommt nämlich sonst sowas wie ein einfaches "&" wird wieder rumgejammert, also maskieren: &
Bei Anwendung von saveXML() - also den generierten Baum als String speichern, werden scheinbar < und >, die im normalen Text enthalten sind, automatisch maskiert. Das sind übrigens öffnende und schließende HTML-Tags, die mittels eines Editors eingegeben wurden -> d.h. Wohlgeformtheit bleibt erhalten. Ich weiß ganz genau, ich habe sie nicht maskiert. Um sie wieder zu ordentlichen Tags zu machen, muss ich sie mit html_entity_decode wieder umwandeln. Dummerweise werden auf diesem Weg auch die einfachen größer und kleiner im Text (" 1 < 2 < 3 > 2 > 1") wieder zurück verwandelt. Beim Laden des XML-Strings in ein neues XML-Dokument mittels new DomDocument und loadXML() sagt der:
Warning: DOMDocument::loadXML(): xmlParseEntityRef: no name in Entity,
DOMDocument::loadXML(): StartTag: invalid element name in Entity
Wie krieg kann ich die wirklichen Tags erhalten, so dass html_entity_decode flach fällt, aber die einfachen Zeichen < und > maskiert, dass loadXML sie akzeptiert?
Gruß,
Leeloo
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach." - Edsger W. Dijkstra