Laden...

XMLSerializer stürzt ab bei & -Zeichen

Erstellt von rollerueckwaerts vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.954 Views
Thema geschlossen
R
rollerueckwaerts Themenstarter:in
57 Beiträge seit 2010
vor 12 Jahren
XMLSerializer stürzt ab bei & -Zeichen

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

16.806 Beiträge seit 2008
vor 12 Jahren

& ist ein Sonderzeichen und muss auch so behandelt werde.

XML Sonderzeichen

R
rollerueckwaerts Themenstarter:in
57 Beiträge seit 2010
vor 12 Jahren

ü ä ö u.s.w macht er doch aber auch ?!

5.742 Beiträge seit 2007
vor 12 Jahren

ü ä ö u.s.w macht er doch aber auch ?!

'&' halt nicht.

16.806 Beiträge seit 2008
vor 12 Jahren

Steht doch dran; zwei Kategorien. Umlaute und Sonderzeichen.
Umlaute kann er (Encoding), Sonderzeichen eben nicht.

R
rollerueckwaerts Themenstarter:in
57 Beiträge seit 2010
vor 12 Jahren

bringt nichts.

Wäre ja auch merkwürdig wenn er & nicht kann aber &amp; können soll ..... da steckt das & doch mit drin 😃

76 Beiträge seit 2008
vor 12 Jahren

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 😃

M
120 Beiträge seit 2009
vor 12 Jahren

Muss aber klappen 😉 Bzw. ansonsten liegt's an was anderem als dem &amp; 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 &amp;).

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.

Hinweis von herbivore vor 12 Jahren

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.

Thema geschlossen