2016-03-25 6 views
0

Ich habe derzeit eine Tabelle bereit, um die Eingabe von einem Formular in meinem Stocklist App-System zu nehmen.Wie schreibe/lade ich mein Dataset zu/von XML

Ich möchte in der Lage sein, die Daten aus der Tabelle in eine XML-Datei zu speichern, die beim nächsten Öffnen des Programms geladen werden kann.

Der aktuelle Code verwende ich ist dies ...

Dim entryno As Integer = 1 
IDColumn.Table.WriteXml("C:\Users\User\Documents\Stocklist\XML\" & entryno & ".xml") 
entryno += 1 

Aber nichts geschaffen wird?

Mein Datensatz wird "StockdataDataSet.xsd" genannt

mein datierbar ist "DataTable1" genannt

Irgendwelche Vorschläge?

+0

Es folgt DataSet ist. WriteXml und DataTable.WriteXml für Speichern in XML dann die umgekehrte DataSet.ReadXml usw. xsd wäre eine Erweiterung für eine XML-Schemadatei. Ich würde vorschlagen, sicherzustellen, dass das DataSet Daten über einen Break-Point hat dann die Tabellen innerhalb und ändern Sie die Erweiterung für die Datei zu .xml –

+0

Vielen Dank, ich werde es versuchen! –

+0

Die DataTable WriteXml() -Methode funktioniert nur, wenn die DataTable eine name -Eigenschaft hat. Die DataSet-Methode arbeitet mit/ohne Namen. Sie können also entweder einen Namen zur Tabelle hinzufügen oder die DataSet-Methode verwenden. Ich empfehle auch, die WriteSchema-Option zu verwenden, so dass die Spalten jedes Mal den gleichen Typ haben, wenn Sie die Datei schreiben/lesen. – jdweng

Antwort

1

Hier ist ein sehr einfaches Beispiel mit fest codierten Daten, damit Sie sehen können, worüber ich gesprochen habe. Platzieren Sie in der Console.WriteLine einen Unterbrechungspunkt, und notieren Sie das DataSet.

Dim fileName As String = IO.Path.Combine(
    AppDomain.CurrentDomain.BaseDirectory, "MyData.xml") 

Dim ds As New DataSet 
Dim dt As New DataTable With {.TableName = "Person"} 
dt.Columns.Add(New DataColumn With {.ColumnName = "FirstName", .DataType = GetType(String)}) 
dt.Columns.Add(New DataColumn With {.ColumnName = "MiddleName", .DataType = GetType(String)}) 
dt.Columns.Add(New DataColumn With {.ColumnName = "LastName", .DataType = GetType(String)}) 

dt.Rows.Add(New Object() {"Karen", "Ann", "Payne"}) 
dt.Rows.Add(New Object() {"Kevin", "S", "Gallagher"}) 
dt.Rows.Add(New Object() {"Mary", "D", "Jones"}) 

ds.Tables.Add(dt) 

ds.WriteXml(fileName) 
Console.WriteLine("place a break point here") 
ds.Clear() 
ds.ReadXml(fileName) 
Console.WriteLine("place a break point here") 

Ergebnisse

<?xml version="1.0" standalone="yes"?> 
<NewDataSet> 
    <Person> 
    <FirstName>Karen</FirstName> 
    <MiddleName>Ann</MiddleName> 
    <LastName>Payne</LastName> 
    </Person> 
    <Person> 
    <FirstName>Kevin</FirstName> 
    <MiddleName>S</MiddleName> 
    <LastName>Gallagher</LastName> 
    </Person> 
    <Person> 
    <FirstName>Mary</FirstName> 
    <MiddleName>D</MiddleName> 
    <LastName>Jones</LastName> 
    </Person> 
</NewDataSet> 

Notiere die DataSet Namen NewDataSet, lassen Sie uns ändern, dass die Daten durch die Schaffung eingestellt als

Dim ds As New DataSet With {.DataSetName = "People"} 

Ergebnisse

<?xml version="1.0" standalone="yes"?> 
<People> 
    <Person> 
    <FirstName>Karen</FirstName> 
    <MiddleName>Ann</MiddleName> 
    <LastName>Payne</LastName> 
    </Person> 
    <Person> 
    <FirstName>Kevin</FirstName> 
    <MiddleName>S</MiddleName> 
    <LastName>Gallagher</LastName> 
    </Person> 
    <Person> 
    <FirstName>Mary</FirstName> 
    <MiddleName>D</MiddleName> 
    <LastName>Jones</LastName> 
    </Person> 
</People> 
+0

Interessante Beispieldaten;) – dbasnett

+0

Das alles geht in der Form laden? Ich nehme an, na ja, außer von den Write XML Bits ?, sollten sie in die Speicherfunktion gehen? –

+0

In Bezug auf das Lesen in Form laden, sicher. Sie könnten eine Klasse erstellen und die Lese- und Schreiboperationen dort platzieren und dann von Form Load und beim Speichern einer Schaltfläche oder sogar beim Schließen des Formulars aufrufen, aber am besten den Großteil des Codes in eine Klasse schreiben und dann eine Instanz der Klasse als privat in der Form, rufen Sie Methoden in dieser Klasse auf, um Ihre Arbeit zu erledigen. –