Vb.net xml-file dynamisch erzeugen

stonetehrippa

Grünschnabel
Hallo,
ich habe eine xml file mit dem XML writer erstellt was auch funktioniert, aber jetzt will ichvon der Db Daten auslesen und in dei Xml reinspeichern was nicht so geht wie ich es haben möchte:-(
hier der Code:
Code:
 Dim sql_name As String = "SELECT name,nachname,alter FROM Personen WHERE Personen.name IS NOT NULL"
  
     Dim data As New SqlDataAdapter(sql_name,con)
     Dim ds As DataSet = New DataSet()
     data.Fill(ds, "Personen")
     Dim varName As String = "stName"                 'statt der Variablen, die Sql-Abfrage
     Dim varNachname As String = "stNachname"    'statt der Variablen, die Sql-Abfrage
     Dim varAlta As Integer = 66                             'statt der Variablen, die Sql-Abfrage
     Dim wset As New XmlWriterSettings()
     wset.Indent = True
     wset.NewLineOnAttributes = True 
     
    
     try
     Using writer As XmlWriter = XmlWriter.Create("C:\xxx.xml",wset)
    
        writer.WriteStartDocument
        writer.WriteStartElement("Personen")
        writer.WriteStartElement("Person")
        writer.WriteStartAttribute("Nachname")
        writer.WriteValue(varNachname)   'Hier den Nachnamen aus der Db
        writer.WriteEndAttribute()
        writer.WriteStartAttribute("Name")
        writer.WriteValue(name)   'Hier den Namen aus der Db
        writer.WriteEndAttribute()     
        writer.WriteStartAttribute("Alta")  
        writer.WriteValue(varAlta)    'Hier das Alter aus der Db
        writer.WriteEndAttribute()
        writer.WriteEndElement()
        writer.WriteEndElement()
        writer.WriteEndDocument()
        writer.Flush()
        lbl2.Text = "XML-Datei erfolgreich erstellt"
     End Using 
     catch ex As Exception
     lbl2.Text = "EEERRROOORR" & ex.Message 
     End Try
End Sub
ich habe es mit einer For Each versucht aber dort war das Ergbnis:
<Personen>
<Person Nachname="Lustig" Name="Thomas Dieter Franz Ullrich Lars" Alter="22"/>
</Personen>

also alle Daten hat es mir in eine Zeile reingeschrieben..
Und ich möchte es so haben:
<Personen>
<Person Nachname="Lustig" Name="Thomas" Alter="44"/>
<Person Nachname="Frech" Name="Dieter" Alter="44"/>
...
</Personen>
wie schaffe ich das?:confused:
 
Zuletzt bearbeitet:

Nico Graichen

Erfahrenes Mitglied
Hi

Muss das extra in einem eigenen Format sein?
Wenn nein kannst du die Methode DataSet.WriteXml nutzen.

Aber wie mir eher scheint, machst du einen Fehler beim Lesen aus der DB bzw. beim Schreiben in die Variablen. Poste doch mal den richtigen Code und nicht den Ersatz von oben
 

mihl

Grünschnabel
Hallo niggo,´(bin stone..,habe nur das passwort vergessen und die email adresse gibts nicht mehr),
ich muss es so machen da ich die xml datei genau so brauche oder kann ich anders auch eine xml genau nach meinem schema machen?
Der Code müsste korrekt sein , mir erstellt es eine xml , aber nur wie oben beschrieben, einen Vorschlag?(bin für alles offen;-)
 

Nico Graichen

Erfahrenes Mitglied
Wie kann man denn innerhalb von 9 Stunden sein Passwort vergessen und seinen E-Mail-Acc löschen :confused:

Im DataSet befindet sich eine DataTable. Über deren Rows kannst du mit einer foreach-Schleife laufen und dir die entsprechenden Informationen in Variablen schreiben. Der Zugriff ist auf jede einzelne Column möglich.
Die Schleife muss aber innerhalb des Using-Blocks für den XmlWriter laufen!