Zeilenumbruch in XML speichern
Richard
- xml
Hallo,
Formulareinträge werden in einer XML-Datei gespeichert. Wenn diese dann aber wieder aus der Datei ausgelesen werden, sind die Zeilenumbrüche der Einträge verschwunden, weil sie nicht "mitgespeichert" werden.
Wie kann ich das Problem umgehen? Natürlich könnte ich im Eintrag nach "\n\r" suchen (bevor er in die XML geschrieben wird natürlich) und dafür eine festgelegte Zeichenkette speichern, die beim Wiederauslesen in "<br>"s umgewandelt wird. Ist das auch eleganter möglich?
Beste Grüße
Richard
Hallo Richard.
Formulareinträge werden in einer XML-Datei gespeichert. Wenn diese dann aber wieder aus der Datei ausgelesen werden, sind die Zeilenumbrüche der Einträge verschwunden, weil sie nicht "mitgespeichert" werden.
Einen merkwürdigen Aufbau hast du da. Ein Eintrag in meinem Gästebuch sieht exemplarisch wie folgt aus:
<eintrag id="e42" sichtbar="ja">
<datum>Mon, 27 Nov 2006 19:39:00 +0100</datum>
<host>127.0.0.1</host>
<name><![CDATA[John Doe]]></name>
<kontakt>
<email><![CDATA[jd@example.org]]></email>
<website><![CDATA[http://example.org]]></website>
</kontakt>
<beitrag><![CDATA[Ein kleiner lesenswerter Text
mit Zeilen-
umbrüchen.
Und Absätzen natürlich auch.]]></beitrag>
</eintrag>
Hierbei setze ich dem gesamten Beitrag beim Ausgeben ein „<p>“ voran und ein „</p>“ ans Ende. Im Beitrag mache ich nun aus einem doppelten Zeilenumbruch ein „</p><p>“ und aus den verbleibenden einfachen Zeilenumbrüche ein „<br />“.
Gehen die Zeilenumbrüche bei dir wirklich verloren, oder siehst du sie nur einfach nicht, weil du z. B. kein <pre /> um den Text packst oder wie ich die Zeilenumbrüche HTML-konform machst?
Wie kann ich das Problem umgehen? Natürlich könnte ich im Eintrag nach "\n\r"
Du meinst \r\n (CR+LF, nicht anders herum).
Einen schönen Montag noch.
Gruß, Mathias
Hallo Mathias,
Einen merkwürdigen Aufbau hast du da. Ein Eintrag in meinem Gästebuch sieht exemplarisch wie folgt aus:
Bei mir so:
<entry id="1">
<author>
<name>
hanswurst
</name>
<link>
kontakt@example.org
</link>
</author>
<message>
<date>
29.08.2006
</date>
<time>
14:31
</time>
<text>
Ich bin der Text des Eintrags. Hier war eigentlich ein Zeilenumbruch, jetzt bin ich nur noch ein mickriges Leerzeichen.
</text>
</message>
</entry>
<eintrag id="e42" sichtbar="ja">
<datum>Mon, 27 Nov 2006 19:39:00 +0100</datum>
<host>127.0.0.1</host>
<name><![CDATA[John Doe]]></name>
<kontakt>
<email><![CDATA[jd@example.org]]></email>
<website><![CDATA[http://example.org]]></website>
</kontakt>
<beitrag><![CDATA[Ein kleiner lesenswerter Text
mit Zeilen-
umbrüchen.Und Absätzen natürlich auch.]]></beitrag>
</eintrag>
Und wie bekomme ich die <![CDATA bzw. ]> da drumrum? So genau habe ich mich mit XML nicht beschäftigt, ich lasse lediglich PHP per XML-Funktionen addChild(), addAttribute() etc. Knoten hinzufügen. Reiner Text - Zeilenumbrüche werden zu einfachen whitespaces.
> Hierbei setze ich dem gesamten Beitrag beim Ausgeben ein „<p>“ voran und ein „</p>“ ans Ende. Im Beitrag mache ich nun aus einem doppelten Zeilenumbruch ein „</p><p>“ und aus den verbleibenden einfachen Zeilenumbrüche ein „<br />“.
Schön und gut, aber ich weiß eben nicht wo diese Zeilenumbrüche sind.
> Gehen die Zeilenumbrüche bei dir wirklich verloren, oder siehst du sie nur einfach nicht, weil du z. B. kein <pre /> um den Text packst oder wie ich die Zeilenumbrüche HTML-konform machst?
Wie gesagt, die Zeilenumbrüche werden zu whitespaces, also einfachen Leerzeichen, genau wie bei HTML-Dateien.
Weder in der XML-Datei noch in der späteren Ausgabe sind sie zu sehen.
Beste Grüße
Richard
--
[Werde Gründungsmitglied](http://seti.foren-city.de/)
Hallo Richard.
Einen merkwürdigen Aufbau hast du da. Ein Eintrag in meinem Gästebuch sieht exemplarisch wie folgt aus:
Bei mir so:
Ich gehe davon aus, dass du die Daten vor dem Schreiben in das XML-Dokument einer Validierung unterziehst. Was machst du hierbei mit dem kritischen „<“? (Alle anderen Zeichen kann man vernachlässigen.)
<!-- … -->
<name><![CDATA[John Doe]]></name>
<!-- … -->
>
> Und wie bekomme ich die <![CDATA bzw. ]> da drumrum? So genau habe ich mich mit XML nicht beschäftigt, ich lasse lediglich PHP per XML-Funktionen addChild(), addAttribute() etc. Knoten hinzufügen.
Nanu? Welche XML-Funktionen sollen das sein? Ich arbeite bevorzugt mit den [DOM-Funktionen](http://de2.php.net/manual/de/ref.dom.php), welche direkt eine Funktion zum [Erstellen einer CDATA-Sektion](http://de2.php.net/manual/de/function.dom-domdocument-createcdatasection.php) bieten.
Einen schönen Montag noch.
Gruß, Mathias
--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules
Hallo Mathias,
Ich gehe davon aus, dass du die Daten vor dem Schreiben in das XML-Dokument einer Validierung unterziehst. Was machst du hierbei mit dem kritischen „<“? (Alle anderen Zeichen kann man vernachlässigen.)
htmlspecialchars().
Nanu? Welche XML-Funktionen sollen das sein? Ich arbeite bevorzugt mit den DOM-Funktionen, welche direkt eine Funktion zum Erstellen einer CDATA-Sektion bieten.
Nie davon gehört. Ich arbeite normalerweise mit dem SimpleXMLElement. Bis auf die Sache mit den Zeilenumbrüchen gab es auch nie Probleme.
Beste Grüße
Richard
Hallo Richard.
Nanu? Welche XML-Funktionen sollen das sein? Ich arbeite bevorzugt mit den DOM-Funktionen, welche direkt eine Funktion zum Erstellen einer CDATA-Sektion bieten.
Nie davon gehört. Ich arbeite normalerweise mit dem SimpleXMLElement. Bis auf die Sache mit den Zeilenumbrüchen gab es auch nie Probleme.
Dann empfehle ich dir, dich ein wenig mit DOM in PHP zu befassen, es bietet um ein Vielfaches mehr Möglichkeiten als simplexml es jemals könnte. (Bedarf dafür natürlich aber auch einer ausgiebigeren Einübung.)
Einen schönen Montag noch.
Gruß, Mathias