Was ist die richtige Art und Weise zu Kodieren, CR-LF-Zeilenumbrüche in text - /xml-Werte?
Im Gegensatz zu application/xml Dateien, die etwas tun konnte, oder normalizedString Werte, die konvertieren, werden alle whitespace-Zeichen-Sequenzen zu einem einzigen Leerzeichen, ich Frage hier speziell im Zusammenhang mit der text - /xml-Dateien mit string-Werte. Der Einfachheit halber, sagen wir, ich bin nur mit ASCII-Zeichen mit utf-8-codierte Datei.
Angesichts der folgenden zwei-line-text-string möchte ich darstellen, in XML:
Hello
World!
Welche der folgenden bytes im Speicher:
0000: 48 65 6c 6c 6f 0d 0a 57 6f 72 6c 64 21 Hello..World!
Gemäß RFC 2046, text/* MIME-Typ MUSS (nicht sollte) stellen einen Zeilenumbruch mit Wagenrücklauf gefolgt von Zeilenvorschub-Zeichen-Sequenz. In diesem Licht, das folgende XML-fragment sollte Recht behalten:
<tag>Hello
World!</tag>
oder
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>
Aber ich regelmäßig Dateien wie die folgenden:
<tag><![CDATA[Hello
World!]]></tag>
Oder, noch seltsamer:
<tag>Hello&xD;
World!</tag>
Wo die &0xD; Sequenz, gefolgt von einem einzelnen Linefeed-Zeichen:
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>
Was vermisse ich hier? Was ist die richtige Art und Weise zu repräsentieren mehrere Zeilen text in eine XML-Zeichenfolge-Wert, so dass es aus dem anderen Ende unbehelligt?
InformationsquelleAutor AlwaysLearning | 2013-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
CR (&x0D;), LF (&x0A;), CRLF, oder ein paar andere Kombinationen sind alle gültig. Wie bereits in die Skillung, alle diese übersetzt werden, um einen einzelnen &x0A; Charakter.
Beim Lesen der spec, ich interpretiere es so: wenn eine der folgenden raw-Zeichencode-Sequenzen gefunden, die in der Eingabe, ersetzen Sie es mit
0xd 0xa
:0xd 0x85
,0x85
,0x2028
,0xd «anything other than 0xa or 0x85»
. Da dieser Austausch geschieht "vor der Analyse" (siehe Referenz), alle Literale Zeichen-entity (d.h.,<tag>
</tag>
) sollte beibehalten werden. So zum Beispiel, dass die analysierten Inhalte sollten die byte-Reihenfolge0xd
statt0xa
. Lese ich die spec richtig? Ihre Antwort scheint nahe zu legen, dass dieser Ersatz könnte passieren, nach dem Parsen statt, bevor...InformationsquelleAutor Eric Galluzzo
Nach dem schreiben NUnit tests in Mono-und JUnit-tests in Java, die Antwort scheint zu sein, verwenden Sie entweder <tag>Hallo, \nWorld!</tag> oder <tag>Hallo,
\nWorld!</tag> wie unten...
Foo.cs:
XmlStringTests.cs:
Foo.java:
XmlStringTests.java:
Ich hoffe das spart einigen Leuten Zeit.
InformationsquelleAutor AlwaysLearning