Hallo,
ich möchte eine XML File in ein Objekt wandeln.
Klappt soweit perfekt außer wenn in der XML Datei ein & steht wie z.B. hier:
<AMBB>A & B</AMBB>
Die XML ist UTF8 codiert und ich lese die Datei per:
Stream fileStream = _openFileDialog.File.OpenRead();
using (StreamReader reader = new StreamReader(fileStream,Encoding.UTF8))
{
readedString = reader.ReadToEnd();
}
byte[] byteArray = Encoding.UTF8.GetBytes(readedString);
MemoryStream stream = new MemoryStream(byteArray);
TextReader tr = new StreamReader(stream,Encoding.UTF8);
Wie schaff ichs das er nicht bei & abschmiert ?
Hoffe auf nen Schubbs in die richtige Richtung.
Lieben Dank schon jetzt
& ist ein Sonderzeichen und muss auch so behandelt werde.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
ü ä ö u.s.w macht er doch aber auch ?!
'&' halt nicht.
Steht doch dran; zwei Kategorien. Umlaute und Sonderzeichen.
Umlaute kann er (Encoding), Sonderzeichen eben nicht.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
bringt nichts.
Wäre ja auch merkwürdig wenn er & nicht kann aber & können soll ..... da steckt das & doch mit drin 😃
Das ist eben einfach der Punkt, an dem uns die Geschichte von Zeichensätzen einen "Strich durch die Rechnung" macht.
Akzeptier es so, dann klappts auch 😃
Machs also mal andersherum. Mach irgendeine stupide Klasse. Darin schreibst du irgendwo ein "&" und speicherst das ganze mittels des XMLSerializers weg. Dann schau dir das Ergebnis an 😃
Muss aber klappen 😉 Bzw. ansonsten liegt's an was anderem als dem & wenn es nicht geht. Dein Beispiel aus dem ersten Post ist kein gültiges XML, daher schmiert's beim & weg.
So sind halt die XML-Regeln. &<>" Sind Steuerzeichen für XML, und müssen dementsprechend bei Verwendung als Text escaped werden (im XML geschieht dies eben z.B. durch &).
Ist halt so als ob du ein " in einen String packst... den musst du dann auch escapen. Dann wird er zwar weiterhin im String verwendet, aber das \ sorgt eben dafür dass es escaped und somit nicht das Ende des Strings ist.
Die spezielle Bedeutung des '&'-Zeichens in XML gehört zu den Grundlagen, die wie voraussetzen (siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1) und wurde jetzt außerdem ausführlich beschrieben. Lösungshinweise wurden gegeben. Damit bekommst du es jetzt bestimmt hin.