Moin Moin
Was habe ich vor?
In meinem Programm kann man Komponenten erstellen, welche 7 Werte besitzen. Wie viele Komponenten vorhanden sind, ist dementsprechend dynamisch, die Anzahl der Werte nicht.
Sobald eine Komponente erstellt wird, wird sie in einer XML abgespeichert. Bei Programmstart werden die Komponenten aus der Datei wieder eingelesen.
Wie habe ich es bisher versucht?
Vorerst habe ich meine Komponenten in eine List gespeichert und in eine XML geschrieben. Das funktioniert soweit problemlos.
Beim Einlesen erscheint allerdings ein Fehler, dass es mehr Einträge gibt als vorgesehen. Ich nehme daher an, dass irgendwas an der Formatierung der XML nicht richtig ist.
So sollten die Daten am besten aussehen, wenn sie erneut eingelesen werden:
Wie sieht meine List aus?
Ich habe eine eigene Klasse erstellt, in der folgendes erhalten ist:
Wie ich die Daten in die XML schreibe:
Folgendes wird in die XML geschrieben:
Wie ich die XML Importiere:
Welche Daten ich bekomme:
[/b]
Soweit so gut. Genau so soll es sein. Nun führe ich den Sub WriteXML() erneut aus.
Meine XML:
Nun der Fehler:
Das Ausführen von Import() führt zu einem Fehler beim Punkt
Innere Aushahme: XmlException: Unerwartete XML-Deklaration. Die XML-Deklaration muss der erste Knoten im Dokument sein. Davor sind keine Leerzeichen zulässig. Zeile 12, Position 17.
Wunderbar wäre es, wenn er die Daten nun einfach in eine neue Reihe schieben würde, quasi:
Das ist vermutlich auch nicht so schwierig, allerdings bin ich mit meinen Ansätzen und Google Versuchen am Ende
Was habe ich vor?
In meinem Programm kann man Komponenten erstellen, welche 7 Werte besitzen. Wie viele Komponenten vorhanden sind, ist dementsprechend dynamisch, die Anzahl der Werte nicht.
Sobald eine Komponente erstellt wird, wird sie in einer XML abgespeichert. Bei Programmstart werden die Komponenten aus der Datei wieder eingelesen.
Wie habe ich es bisher versucht?
Vorerst habe ich meine Komponenten in eine List gespeichert und in eine XML geschrieben. Das funktioniert soweit problemlos.
Beim Einlesen erscheint allerdings ein Fehler, dass es mehr Einträge gibt als vorgesehen. Ich nehme daher an, dass irgendwas an der Formatierung der XML nicht richtig ist.
So sollten die Daten am besten aussehen, wenn sie erneut eingelesen werden:
Wie sieht meine List aus?
Ich habe eine eigene Klasse erstellt, in der folgendes erhalten ist:
VB.NET-Quellcode
- Imports System.IO
- Imports System.Xml.Serialization
- <XmlRoot>
- Public Class Komponenten
- <XmlElement("Komponente")>
- Public Property List As New List(Of KomponentenWerte)
- End Class
- Public Class KomponentenWerte
- Public Bezeichnung As String
- Public KomponentenNr As UShort
- Public Werk As UShort
- Public Zeit As String
- Public Einheit As String
- Public pEinheit As UShort
- Public Preis As Decimal
- End Class
Wie ich die Daten in die XML schreibe:
VB.NET-Quellcode
- Public Sub WriteXML()
- Dim KomponentenWert As New KomponentenWerte() With
- {
- .Bezeichnung = "TestKomponente",
- .Einheit = "kg",
- .pEinheit = 1000,
- .Preis = CDec("5,50"),
- .Werk = 123,
- .Zeit = "29.06.2022"
- }
- Dim Komponente As New Komponenten()
- Komponente.List.Add(KomponentenWert)
- Dim writer As New XmlSerializer(GetType(Komponenten))
- Dim file As New StreamWriter(Application.StartupPath & "Komponenten.xml", True)
- writer.Serialize(file, Komponente)
- file.Close()
- End Sub
Folgendes wird in die XML geschrieben:
XML-Quellcode
- <?xml version="1.0" encoding="utf-8"?>
- <Komponenten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Komponente>
- <Bezeichnung>TestKomponente</Bezeichnung>
- <KomponentenNr>0</KomponentenNr>
- <Werk>123</Werk>
- <Zeit>29.06.2022</Zeit>
- <Einheit>kg</Einheit>
- <pEinheit>1000</pEinheit>
- <Preis>5.50</Preis>
- </Komponente>
- </Komponenten>
Wie ich die XML Importiere:
Welche Daten ich bekomme:
[/b]
Soweit so gut. Genau so soll es sein. Nun führe ich den Sub WriteXML() erneut aus.
Meine XML:
XML-Quellcode
- <?xml version="1.0" encoding="utf-8"?>
- <Komponenten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Komponente>
- <Bezeichnung>TestKomponente</Bezeichnung>
- <KomponentenNr>0</KomponentenNr>
- <Werk>123</Werk>
- <Zeit>29.06.2022</Zeit>
- <Einheit>kg</Einheit>
- <pEinheit>1000</pEinheit>
- <Preis>5.50</Preis>
- </Komponente>
- </Komponenten><?xml version="1.0" encoding="utf-8"?>
- <Komponenten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <Komponente>
- <Bezeichnung>TestKomponente2</Bezeichnung>
- <KomponentenNr>123</KomponentenNr>
- <Werk>123</Werk>
- <Zeit>29.06.2022</Zeit>
- <Einheit>t</Einheit>
- <pEinheit>1</pEinheit>
- <Preis>5.50</Preis>
- </Komponente>
- </Komponenten>
Nun der Fehler:
Das Ausführen von Import() führt zu einem Fehler beim Punkt
Innere Aushahme: XmlException: Unerwartete XML-Deklaration. Die XML-Deklaration muss der erste Knoten im Dokument sein. Davor sind keine Leerzeichen zulässig. Zeile 12, Position 17.
Wunderbar wäre es, wenn er die Daten nun einfach in eine neue Reihe schieben würde, quasi:
Das ist vermutlich auch nicht so schwierig, allerdings bin ich mit meinen Ansätzen und Google Versuchen am Ende
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Silvergreen“ ()