Quelle est la bonne façon de coder CR-LF sauts de ligne dans le texte/xml valeurs?

Par opposition à l'application/xml fichiers qui pourraient faire quelque chose, ou normalizedString valeurs qui convertir tous les espaces séquences à un seul caractère espace, je pose la question ici plus spécifiquement dans le contexte de fichiers texte/xml avec les valeurs de chaîne. Par souci de simplicité, disons que je suis le seul à l'aide de caractères ASCII d'un fichier encodé en UTF8.

Donné les deux suivants de la ligne de chaîne de texte que je souhaite représenter en XML:

Hello
World!

Qui est la suivante octets en mémoire:

0000: 48 65 6c 6c 6f 0d 0a 57 6f 72 6c 64 21 Hello..World!

Selon la RFC 2046, tout texte/* type MIME DOIT (devrait) représentent un saut de ligne à l'aide de Retour Chariot suivi par un caractère de Saut de ligne séquence. Dans cette lumière, le fragment XML suivant devrait être à droite:

<tag>Hello
World!</tag>

ou

0000: 3c 74 61 67 3c 48 65 6c 6c 6f 0d 0a 57 6f 72 6c <tag>Hello..Worl
0010: 64 21 3c 2f 74 61 67 3c                         d!</tag>

Mais je vais régulièrement voir les fichiers comme suit:

<tag><![CDATA[Hello
World!]]></tag>

Ou, encore plus étrange:

<tag>Hello&xD;
World!</tag>

Où l' &0xD; séquence est suivie par un seul caractère de Saut de ligne:

0000: 3c 74 61 67 3c 48 65 6c 6c 6f 26 78 44 3b 0a 57 <tag>Hello&xD;.W
0010: 6f 72 6c 64 21 3c 2f 74 61 67 3c                orld!</tag>

Ce qui me manque ici? Quelle est la bonne façon de représenter plusieurs lignes de texte dans une chaîne de caractères XML valeur, de sorte qu'il peut sortir de l'autre bout sans encombre?

OriginalL'auteur AlwaysLearning | 2013-02-22