Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
XMLSerializer stürzt ab bei & -Zeichen
rollerueckwaerts
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

XMLSerializer stürzt ab bei & -Zeichen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rollerueckwaerts am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15980

beantworten | zitieren | melden

& ist ein Sonderzeichen und muss auch so behandelt werde.

XML Sonderzeichen
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
rollerueckwaerts
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

beantworten | zitieren | melden

ü ä ö u.s.w macht er doch aber auch ?!
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat von rollerueckwaerts
ü ä ö u.s.w macht er doch aber auch ?!
'&' halt nicht.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15980

beantworten | zitieren | melden

Steht doch dran; zwei Kategorien. Umlaute und Sonderzeichen.
Umlaute kann er (Encoding), Sonderzeichen eben nicht.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
rollerueckwaerts
myCSharp.de - Member



Dabei seit:
Beiträge: 59

Themenstarter:

beantworten | zitieren | melden

bringt nichts.

Wäre ja auch merkwürdig wenn er & nicht kann aber &amp; können soll ..... da steckt das & doch mit drin :)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von rollerueckwaerts am .
private Nachricht | Beiträge des Benutzers
DeZio
myCSharp.de - Member

Avatar #avatar-3334.png


Dabei seit:
Beiträge: 81

beantworten | zitieren | melden

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 :-)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von DeZio am .
private Nachricht | Beiträge des Benutzers
Marsti
myCSharp.de - Member



Dabei seit:
Beiträge: 124

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (01.03.2012 - 08:39:31):

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.