System.Xml.XmlException ?

Hallo,

ich wusste nicht, ob das hier zu XML gehört, aber ich habe mich für dieses Forum entschieden, da sich .NET-Entwickler sicher auch gut mit XML auskennen.

Ich habe ein paar Informationen als Xml abgespeichert und möchte diese auslesen:

XmlText = new XmlDocument();
XmlText.Load(„File.xml“);

Dabei gibt es jedoch obige Exception. Ich vermute, dass die Elemente in folgendem Tag nicht akzeptiert werden:

Blablabla „Blubb“ Bla

Ich möchte also (als string) einen Text zurückerhalten, in dem auch Anführungsstriche stehen und ein Carriage Return. Ich hatt oben angenommen, dass diese Notation, wie ich sie aus html kenne, auch hier gelten, denn ich weiß nicht, ob es erlaubt bzw. möglich ist, cr bzw. Sonderzeichen anders zwischen den Tags unterzubringen ("\n" als cr funktioniert jedenfalls nicht, das wird später im String als „\n“ gespeichert).

Ich hoffe, dass mein Vorhaben überhaupt möglich ist. Das sind meine ersten Versuche mit xml.

Danke und Gruß
Alexander

Hi!

Ein gültiges Xml-Dokument hat „wohlgeformt“ zu sein, d.h. u.a., dass es genau ein Root-Tag gibt und alle anderen Tags darunter hängen und außerdem zu jedem Tag auch das passende schließende Tag existiert.

Beim
ist das nicht der Fall (HTML ist da lascher in der Überprüfung), wenn Du statt dessen aber
schreibst, dann lässt sich das XML-Dokument vermutlich wenigstens einlesen.

Ansonsten sollte das ‚\n‘ auch im Text des Tags erhalten bleiben. Wenn Du aber in Deinen Tags etwas speichern möchtest, das dann in HTML einen Umbruch produziert, dann müsste Deine XML-Datei so aussehen:
Blablabla „Blubb“ Bla

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Martin,

Beim
ist das nicht der Fall (HTML ist da lascher in
der Überprüfung), wenn Du statt dessen aber

schreibst, dann lässt sich das XML-Dokument vermutlich
wenigstens einlesen.

Danke, eine Exception wird nun nicht mehr gefeuert, aber im resultierenden string wird das nun ignoriert, d.h. die von mir gewünschten ascii-Codes 13 und 10 sind nicht vorhanden. Es muss doch eine Möglichkeit geben, dem .NET-XML-Parser zu vermitteln, dass man ein cr haben will!

Ansonsten sollte das ‚\n‘ auch im Text des Tags erhalten
bleiben.

Tut es ja auch, aber ich will ja nicht diese zwei Zeichen im String haben, sondern das cr. Verstehst du?

Wenn Du aber in Deinen Tags etwas speichern möchtest,
das dann in HTML einen Umbruch produziert, dann müsste Deine
XML-Datei so aussehen:
Blablabla „Blubb“ Bla

Nein, ich möchte wie gesagt etwas produzieren, das z.B. in der Darstellung in MessageBox einen Umbruch produziert (ich programmiere in Windows-Forms, nicht ASP.NET).

Gruß
Alexander

Ups, ich bin gerade selbst darauf gekommen, dass ich das ganz einfach mit einem Zeilenumbruch in der XML-Datei selbst erreichen kann. Also einfacher, als ich gedacht hatte…

Falls aber dennoch jemand weiß, ob das auch anders geht, wäre ich froh, da dann meine XML-Datei übersichtlicher wäre…

Gruß
Alexander

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Martin,

[…]
Danke, eine Exception wird nun nicht mehr gefeuert, aber im
resultierenden string wird das nun ignoriert, d.h. die von mir
gewünschten ascii-Codes 13 und 10 sind nicht vorhanden. Es
muss doch eine Möglichkeit geben, dem .NET-XML-Parser zu
vermitteln, dass man ein cr haben will!

Genau das passiert auch.
Was Du als InnerText in den XmlNode schreibst, das bleibt auch so drin, wenn Du das XML Dokument in eine Datei schreibst und wieder einliest.

Ich vermute mal, dass Du die XML-Datei mit einem externen Editor erstellen/bearbeiten willst und die Probleme daher kommen, dass Du Dir des unterschiedlichen Verhaltens unterschiedlicher Editoren bzgl. des Zeilenumbruchs nicht bewusst bist.
Wenn Du die XML-Datei mit Notepad aufmachst, dann wird Dir ein ‚\n‘ (Newline, also ASCII 13) als Kästchen dargestellt, weil das Edit-Control eben die Kombination CR/NL ("\r\n", ASCII 10 + 13) als Zeilenumbruch interpretiert. Wenn Du dann die Return-Taste drückst, dann kommt an der Stelle auch ein \r\n in den Text, wird abgespeichert und ist damit Bestandteil des InnerText Deines Knotens.

Das RichEdit-Control dagegen (z.B. in Write/Wordpad) verwendet NUR das \n als Zeilenumbruchzeichen, beim Betätigen von Return kommt damit auch nur ein \n in den Text.

Ansonsten sollte das ‚\n‘ auch im Text des Tags erhalten
bleiben.

Tut es ja auch, aber ich will ja nicht diese zwei Zeichen im
String haben, sondern das cr. Verstehst du?

Das ‚\n‘ ist die Schreibweise für das Zeichen (wg. Hochkomma) mit der Escape-Sequenz \n, wie sie in C, C++, C# usw. existiert. Also keine zwei Zeichen „Backslash“ und „kleines N“, sondern nur ein Zeichen, nämlich ASCII 13 (Newline).

[…]

Gruß,
Martin