Hallo zusammen ,
ich hätte mal wieder ein Problemchen das mich wirklich nervt.
Ich versuche gerade ein kleines Programm zu schreiben, bei dem man später verschiedene Benutzer anlegen kann. Die jeweiligen Benutzer sollen dann verschiedene Daten darin speichern können. Zum testen habe ich es erstmal so geschrieben, dass man als eingeloggter Benutzer lediglich Adressdaten speichern kann.
Da ich mich mit Datasets nicht auskenne, weil ich mich noch nie damit auseinander gesetzt habe (es aber in naher Zukunft vor habe), möchte ich das Ganze erstmal so umsetzen, dass die jeweiligen Benutzer mit ihren jeweiligen Daten komplett in nur einer Datei geschrieben werden. Auch wenn es so vielleicht wenig Sinn macht, würde ich das gerne so umsetzen.
Nun zu meinem Problem: Wenn ich einen neuen Benutzer registriere, sollte die XML-Datei eigentlich so aussehen:
Stattdessen wird aber folgendes rein geschrieben:
Adressdaten der jeweiligen Benutzer an der richtigen Stellen eintragen funktioniert soweit auch. Nur verstehe ich nicht, wieso die o.g. Fehler auftreten.
Jetzt noch ein Beispiel mit zwei Benutzern:
Hier noch ein Beispiel mit zwei Benutzern und den jweiligen Adressdaten:
Hier mal der relevante Code-Ausschnitt der AppUser-Klasse:
...und für die Adressdaten:
Was ist hier falsch? Könnt ihr mir bitte helfen?
ich hätte mal wieder ein Problemchen das mich wirklich nervt.
Ich versuche gerade ein kleines Programm zu schreiben, bei dem man später verschiedene Benutzer anlegen kann. Die jeweiligen Benutzer sollen dann verschiedene Daten darin speichern können. Zum testen habe ich es erstmal so geschrieben, dass man als eingeloggter Benutzer lediglich Adressdaten speichern kann.
Da ich mich mit Datasets nicht auskenne, weil ich mich noch nie damit auseinander gesetzt habe (es aber in naher Zukunft vor habe), möchte ich das Ganze erstmal so umsetzen, dass die jeweiligen Benutzer mit ihren jeweiligen Daten komplett in nur einer Datei geschrieben werden. Auch wenn es so vielleicht wenig Sinn macht, würde ich das gerne so umsetzen.
Nun zu meinem Problem: Wenn ich einen neuen Benutzer registriere, sollte die XML-Datei eigentlich so aussehen:
XML-Quellcode
- <?xml version="1.0"?>
- <AppUser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <AllUsers>
- <AppUser>
- <AppUsername>Rebecca</AppUsername>
- <AppUserPasswordHash>CF68E063B433FBAD3F4BE5F9CACC38ED0D84EDDF2A05D0F9D961A0183FFD3B9E</AppUserPasswordHash>
- <AppUserID>1</AppUserID>
- <AppUserGUID>609c537c-86d0-42d3-8995-d13c52798651</AppUserGUID>
- <AppUserData>
- <AllAdressData />
- </AppUserData>
- </AppUser>
- </AllUsers>
- </AppUser>
Stattdessen wird aber folgendes rein geschrieben:
XML-Quellcode
- <?xml version="1.0"?>
- <AppUser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <AllUsers>
- <AppUser>
- <AllUsers /> <- FALSCH!!!
- <AppUsername>Rebecca</AppUsername>
- <AppUserPasswordHash>CF68E063B433FBAD3F4BE5F9CACC38ED0D84EDDF2A05D0F9D961A0183FFD3B9E</AppUserPasswordHash>
- <AppUserID>1</AppUserID>
- <AppUserGUID>609c537c-86d0-42d3-8995-d13c52798651</AppUserGUID>
- <AppUserData>
- <AllAdressData />
- </AppUserData>
- </AppUser>
- </AllUsers>
- <AppUserData> <- FALSCH!!!
- <AllAdressData /> <- FALSCH!!!
- </AppUserData> <- FALSCH!!!
- </AppUser>
Adressdaten der jeweiligen Benutzer an der richtigen Stellen eintragen funktioniert soweit auch. Nur verstehe ich nicht, wieso die o.g. Fehler auftreten.
Jetzt noch ein Beispiel mit zwei Benutzern:
XML-Quellcode
- <?xml version="1.0"?>
- <AppUser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <AllUsers>
- <AppUser>
- <AllUsers /> <- FALSCH!!!
- <AppUsername>Rebecca</AppUsername>
- <AppUserPasswordHash>CF68E063B433FBAD3F4BE5F9CACC38ED0D84EDDF2A05D0F9D961A0183FFD3B9E</AppUserPasswordHash>
- <AppUserID>1</AppUserID>
- <AppUserGUID>609c537c-86d0-42d3-8995-d13c52798651</AppUserGUID>
- <AppUserData>
- <AllAdressData />
- </AppUserData>
- </AppUser>
- <AppUser>
- <AllUsers /> <- FALSCH!!!
- <AppUsername>Rebecca2</AppUsername>
- <AppUserPasswordHash>13D753335C627AABF242C54AF360F8202333650081C609066AC5420F423D47D1</AppUserPasswordHash>
- <AppUserID>2</AppUserID>
- <AppUserGUID>8b05a2d9-5a69-4b3c-a928-2b358164cd8a</AppUserGUID>
- <AppUserData>
- <AllAdressData />
- </AppUserData>
- </AppUser>
- </AllUsers>
- <AppUserData> <- FALSCH!!!
- <AllAdressData /> <- FALSCH!!!
- </AppUserData> <- FALSCH!!!
- </AppUser>
Hier noch ein Beispiel mit zwei Benutzern und den jweiligen Adressdaten:
XML-Quellcode
- <?xml version="1.0"?>
- <AppUser xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <AllUsers>
- <AppUser>
- <AllUsers /> <- FALSCH!!!
- <AppUsername>Rebecca</AppUsername>
- <AppUserPasswordHash>CF68E063B433FBAD3F4BE5F9CACC38ED0D84EDDF2A05D0F9D961A0183FFD3B9E</AppUserPasswordHash>
- <AppUserID>1</AppUserID>
- <AppUserGUID>609c537c-86d0-42d3-8995-d13c52798651</AppUserGUID>
- <AppUserData>
- <AllAdressData>
- <UserData>
- <Prename>Max</Prename>
- <Surname>Mustermann</Surname>
- <Street>Musterstraße 111</Street>
- <Postcode>77777</Postcode>
- <City>Musterstadt</City>
- <State>Musterstaat</State>
- <Country>Musterland</Country>
- <AllAdressData /> <- FALSCH!!!
- </UserData>
- </AllAdressData>
- </AppUserData>
- </AppUser>
- <AppUser>
- <AllUsers /> <- FALSCH!!!
- <AppUsername>Rebecca2</AppUsername>
- <AppUserPasswordHash>13D753335C627AABF242C54AF360F8202333650081C609066AC5420F423D47D1</AppUserPasswordHash>
- <AppUserID>2</AppUserID>
- <AppUserGUID>8b05a2d9-5a69-4b3c-a928-2b358164cd8a</AppUserGUID>
- <AppUserData>
- <AllAdressData>
- <UserData>
- <Prename>Testvorname</Prename>
- <Surname>Testnachname</Surname>
- <Street>Teststraße 111</Street>
- <Postcode>77777</Postcode>
- <City>Teststadt</City>
- <State>Teststaat</State>
- <Country>Testland</Country>
- <AllAdressData /> <- FALSCH!!!
- </UserData>
- </AllAdressData>
- </AppUserData>
- </AppUser>
- </AllUsers>
- <AppUserData> <- FALSCH!!!
- <AllAdressData /> <- FALSCH!!!
- </AppUserData> <- FALSCH!!!
- </AppUser>
Hier mal der relevante Code-Ausschnitt der AppUser-Klasse:
VB.NET-Quellcode
- 'Benutzer-Klasse
- <System.Serializable()>
- Public Class AppUser
- Private Username As String
- Private UserPasswordHash As String
- Private UserID As String
- Private UserGUID As String
- 'Zum Speichern von Benutzerdaten
- Private UserData As New UserData
- 'Konstruktoren
- 'Parameterloser Konstruktor
- Public Sub New()
- End Sub
- 'Konstruktor
- Public Sub New(ByVal AUN As String, ByVal AUPH As String, ByVal AUID As String, ByVal AUGUID As String)
- 'Me.New()
- AppUsername = AUN
- AppUserPasswordHash = AUPH
- AppUserID = AUID
- AppUserGUID = AUGUID
- End Sub
- 'Eine neue Liste zum Speichern aller Benutzer
- Private ApplicationUsers As New List(Of AppUser)
- '--------------------------------- Eigenschaften ---------------------------------
- 'Liste aller Benutzer
- Public Property AllUsers() As List(Of AppUser)
- Get
- Return ApplicationUsers
- End Get
- Set(value As List(Of AppUser))
- ApplicationUsers = value
- End Set
- End Property
- 'Benutzer
- Public Property AppUsername() As String
- Get
- Return Username
- End Get
- Set(value As String)
- Username = value
- End Set
- End Property
- 'Gehashtes Passwort
- Public Property AppUserPasswordHash() As String
- Get
- Return UserPasswordHash
- End Get
- Set(value As String)
- UserPasswordHash = value
- End Set
- End Property
- 'Benutzer Identifikationsnummer
- Public Property AppUserID() As String
- Get
- Return UserID
- End Get
- Set(value As String)
- UserID = value
- End Set
- End Property
- 'Benutzer GUID
- Public Property AppUserGUID() As String
- Get
- Return UserGUID
- End Get
- Set(value As String)
- UserGUID = value
- End Set
- End Property
- 'Benutzerdaten
- Public Property AppUserData() As UserData
- Get
- Return UserData
- End Get
- Set(value As UserData)
- UserData = value
- End Set
- End Property
- '--------------------------------- Methoden ---------------------------------
- 'Benutzer hinzufügen
- Public Sub AddUser(ByVal Username As String, ByVal UserPasswordHash As String, ByVal UserID As String, ByVal UserGUID As String)
- AllUsers.Add(New AppUser(Username, UserPasswordHash, UserID, UserGUID))
- End Sub
- 'Benutzer löschen
- Public Sub RemoveUser(ByVal User As AppUser)
- AllUsers.Remove(User)
- End Sub
- .
- .
- .
...und für die Adressdaten:
VB.NET-Quellcode
- 'Adressdaten-Klasse
- Public Class UserData
- 'Adressdaten-Struktur
- Public Prename As String
- Public Surname As String
- Public Street As String
- Public Postcode As String
- Public City As String
- Public State As String
- Public Country As String
- 'Parameterloser Konstruktor
- Public Sub New()
- End Sub
- 'Konstruktor
- Public Sub New(ByVal PName As String,
- ByVal SName As String,
- ByVal StName As String,
- ByVal PCode As String,
- ByVal CName As String,
- ByVal SteName As String,
- ByVal CyName As String)
- Prename = PName
- Surname = SName
- Street = StName
- Postcode = PCode
- City = CName
- State = SteName
- Country = CyName
- End Sub
- 'Eine neue Liste zum Speichern aller Adressen
- Private UserAdresses As New List(Of UserData)
- 'Liste aller Adressdaten zurückgeben oder setzen
- Public Property AllAdressData() As List(Of UserData)
- Get
- Return UserAdresses
- End Get
- Set(value As List(Of UserData))
- UserAdresses = value
- End Set
- End Property
- 'Adressdaten hinzufügen
- Public Sub AddAdress(ByVal Prename As String,
- ByVal Surname As String,
- ByVal Street As String,
- ByVal PostCode As String,
- ByVal City As String,
- ByVal State As String,
- ByVal Country As String)
- AllAdressData.Add(New UserData(Prename, Surname, Street, PostCode, City, State, Country))
- End Sub
- 'Adressdaten löschen
- Public Sub RemoveAdress(Item As UserData)
- AllAdressData.Remove(Item)
- End Sub
- End Class
Was ist hier falsch? Könnt ihr mir bitte helfen?