| 
| Autor | Beitrag |  
| Crusher87 Hält's aus hier
 Beiträge: 3
 
 
 
 
 | 
Verfasst: Do 19.07.18 11:04 
 
Hallo zusammen,
 da ich langsam am verzweifeln bin, frag ich einfach nach Hilfe.
 Ich möchte ein XML- Datei auslesen und in eine Listbox schreiben.
 Leider erhalte ich den Fehler      System.InvalidOperationException: "Fehler im XML-Dokument (2,2)."
 Anbei meine Codes:
 Zum schreiben:
 Main Window:
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 
 | System.Xml.Serialization.XmlSerializer xmlserializer = new System.Xml.Serialization.XmlSerializer(typeof(List<Messwerte>));List<Messwerte> listeMesswerte = new List<Messwerte>();
 StreamWriter sw = new StreamWriter(filename_puffer);
 listeMesswerte.Add(new Messwerte { nummer = Convert.ToString(n), date = Convert.ToString(DateTime.Now), Messwert_H9_5 = Robi_.NumReg[51], Messwert_H11 = Robi_.NumReg[52], Messwert_H13_8 = Robi_.NumReg[53], Messwert_H16 = Robi_.NumReg[54], Messwert_H18 = Robi_.NumReg[55], Messwert_H20 = Robi_.NumReg[56], Messwert_H23_8 = Robi_.NumReg[57], Messwert_H28 = Robi_.NumReg[58], Messwert_H29 = Robi_.NumReg[59]});
 xmlserializer.Serialize(sw, listeMesswerte);
 sw.Close();
 |  Klasse:
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 
 | public class Messwerte{
 [XmlAttribute("Nummer")]
 public string nummer
 {
 get;
 set;
 }
 
 [XmlElement("DatumZeit")]
 public string date
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H9_5")]
 public string Messwert_H9_5
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H11")]
 public string Messwert_H11
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H13_8")]
 public string Messwert_H13_8
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H16")]
 public string Messwert_H16
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H18")]
 public string Messwert_H18
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H20")]
 public string Messwert_H20
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H23_8")]
 public string Messwert_H23_8
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H28")]
 public string Messwert_H28
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H29")]
 public string Messwert_H29
 {
 get;
 set;
 }
 }
 |  XML-Datei (Bsp:)
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 
 | <?xml version="1.0" encoding="UTF-8"?>
 -<ArrayOfMesswerte xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
 -<Messwerte Nummer="1">
 
 <DatumZeit>19.07.2018 11:35:36</DatumZeit>
 
 <Messwert_H9_5>6</Messwert_H9_5>
 
 <Messwert_H11>7,002096</Messwert_H11>
 
 <Messwert_H13_8>7,0024</Messwert_H13_8>
 
 <Messwert_H16>7,0024</Messwert_H16>
 
 <Messwert_H18>7,002501</Messwert_H18>
 
 <Messwert_H20>7,002501</Messwert_H20>
 
 <Messwert_H23_8>7,001994</Messwert_H23_8>
 
 <Messwert_H28>7,001994</Messwert_H28>
 
 <Messwert_H29>7,095992</Messwert_H29>
 
 </Messwerte>
 
 
 -<Messwerte Nummer="2">
 
 <DatumZeit>19.07.2018 11:36:36</DatumZeit>
 
 <Messwert_H9_5>1</Messwert_H9_5>
 
 <Messwert_H11>7,002096</Messwert_H11>
 
 <Messwert_H13_8>7,0024</Messwert_H13_8>
 
 <Messwert_H16>7,0024</Messwert_H16>
 
 <Messwert_H18>7,002501</Messwert_H18>
 
 <Messwert_H20>7,002501</Messwert_H20>
 
 <Messwert_H23_8>7,001994</Messwert_H23_8>
 
 <Messwert_H28>7,001994</Messwert_H28>
 
 <Messwert_H29>7,095992</Messwert_H29>
 
 </Messwerte>
 
 </ArrayOfMesswerte>
 |  Zum Lesen:
 		                       C#-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 
 | XmlSerializer xmlserializer = new XmlSerializer(typeof(List<Messwerte_>));List<Messwerte_> listeMesswerte = new List<Messwerte_>();
 datum_ = Convert.ToString(listBoxDatum.SelectedItem);
 StreamReader sr = new StreamReader("...\\Messwerte\\" + Ordner + "\\" + Maschine + "\\" + datum_ + "_Messwerte_" + Convert.ToString(listBoxTeile.SelectedItem) + "_P_" + ".xml");
 listeMesswerte = (List<Messwerte_>)xmlserializer.Deserialize(sr);
 Anzahl_Messergebnisse = (listeMesswerte[listeMesswerte.Count - 1].nummer);
 labelAnzahl.Content = Anzahl_Messergebnisse;
 sr.Close();
 
 foreach (Messwerte_ messwerte in listeMesswerte)
 {
 Nummer = messwerte.nummer;
 datum = messwerte.date.Remove(0, 11);
 
 Messwert_13_9 = messwerte.Messwert_H9_5;
 Messwert_14_9 = messwerte.Messwert_H11;
 Messwert_15_9 = messwerte.Messwert_H13_8;
 Messwert_16_9 = messwerte.Messwert_H16;
 
 
 Abstand();
 
 listbox_Gesamttext = Nummer + Abstand_1 + datum + Abstand_2 + Messwert_13_9 + Abstand_2 + Messwert_14_9 + Abstand_2 + Messwert_15_9 + Abstand_2 + Messwert_16_9;
 listBoxMesswerte.Items.Add(listbox_Gesamttext);
 }
 |  Klasse:
 												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 
 | public class Messwerte_{
 [XmlAttribute("Nummer")]
 public string nummer
 {
 get;
 set;
 }
 
 [XmlElement("DatumZeit")]
 public string date
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H9_5")]
 public string Messwert_H9_5
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H11")]
 public string Messwert_H11
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H13_8")]
 public string Messwert_H13_8
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H16")]
 public string Messwert_H16
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H18")]
 public string Messwert_H18
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H20")]
 public string Messwert_H20
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H23_8")]
 public string Messwert_H23_8
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H28")]
 public string Messwert_H28
 {
 get;
 set;
 }
 
 [XmlElement("Messwert_H29")]
 public string Messwert_H29
 {
 get;
 set;
 }
 }
 |  Kann mir jemand helfen? Was mache ich falsch?
 Danke im Voraus?
Moderiert von  Th69: Titel geändert: "Serialisierung:" hinzugefügt
Moderiert von  Mathematiker: Name aus Verzeichnis entfernt |  |  |  
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Do 19.07.18 11:24 
 
Hallo und   ,
 warum hast du zwei verschiedene Klassen für die Messwerte?
 Und sind die Minuszeichen am Anfang mancher Zeilen in der XML-Datei wirklich vorhanden oder nur hier im Forumsbeitrag?
 PS: Und du solltest deinen Code besser strukturieren und das Serialisieren (Lesen, Schreiben) in eigene (Logik-)Klassen auslagern (Trennung von UI und Logik). |  |  |  
| Crusher87  Hält's aus hier
 Beiträge: 3
 
 
 
 
 | 
Verfasst: Do 19.07.18 12:04 
 
Hallo,
 es sind zwei Klassen, weil es 2 verschiedene Programme sind.
 
 Das Programm zum Schreiben ist auf einem PC an einer Maschine.
 Das Programm zum Lesen sollen alle über den Server können.
 
 Die Minus-zeichen sind nur hier im Forumsbeitrag vorhanden.
 |  |  |  
| Th69 
          
  Beiträge: 4800
 Erhaltene Danke: 1059
 
 Win10
 C#, C++ (VS 2017/19/22)
 
 | 
Verfasst: Do 19.07.18 13:54 
 
Dann sollten aber auch beide Klassen gleich heißen bzw. bei den Klassen das gleiche XmlTypeAttribute  angegeben sein (s.a. Attributes That Control XML Serialization ) - evtl. auch noch XmlRootAttribute .
 In der XML-Datei steht ja explizit ArrayOfMesswerte  (und nicht ArrayOfMesswerte_ ).
 Noch besser wäre es wohl, wenn die (eine) Klasse nur in genau einer Assembly definiert ist - und diese dann von beiden Projekten referenziert wird (und dann könnten dadrin dann auch beide Methoden zum Lesen und Speichern enthalten sein - mit entsprechenden Parametern). |  |  |  
| Crusher87  Hält's aus hier
 Beiträge: 3
 
 
 
 
 | 
Verfasst: Do 19.07.18 14:10 
 |  |  |  |