Ich erstelle XML-Dokumente mit Werten aus einer DB abgerufen. Gelegentlich wird aufgrund einer Legacy-Implementierung ein Wert zurückgegeben, der ein ungültiges Zeichen enthält, wenn es nicht ordnungsgemäß maskiert ist (z. B. &).Wann zu CDATA vs. Escape & Vice Versa?
Also die Frage wird, sollte ich CDATA oder Escape? Sind bestimmte Situationen füreinander besser geeignet?
Beispiele: hier
<Email>foo&[email protected]</Email>
Ich würde in Richtung CDATA lehnen.
<Name>Bob & Tom</Name>
Ich würde in Richtung Flucht hier neigen.
Ich möchte vermeiden, CDATA'ing jedes Mal blind, aber aus einer Performance-Perspektive scheint es, dass das die logische Wahl ist. Das ist immer schneller als nach einem ungültigen Zeichen zu suchen, und wenn es existiert, dann wrap.
Gedanken?
CDATA ist auch netzwerkfreundlich für größere Strings, die maskiert werden müssen, daher sollte IMO in den meisten Fällen verwendet werden, in denen die XML-Datei über ein Netzwerk übertragen wird. –