XML lesen und schreiben? Kein Problem mit ASP.NET!

Written on September 19, 2003

XML erfreut sich immer größter Beliebtheit und Verbreitung. Auch das .NET-Framework unterstützt XML per default. Das Lesen und Schreiben von XML-Dateien stellt somit auch kein großes Problem dar, wie der nachfolgende Code zeigen wird.

Wie bei den Beiträgen der letzten Tage gibt es auch heute wieder ein Beispiel: XML-Dateien lesen und schreiben mit ASP.NET

Der Code der aspx-Datei beinhaltet keine Besonderheit, eine ListBox, die die Einträge darstellt sowie eine TextBox und ein Button zur Erfassung der neuen Einträge für die ListBox:

1:

2:

7:

8:

12:

13:

<asp:Label id="Label1"

14: style="Z-INDEX: 103; LEFT: 24px; POSITION: absolute; TOP: 24px"

15: runat="server"

16: Width="400px"

17: Font-Bold="True">XML-Dateien lesen und schreiben mit ASP.NET

18:

19:

<asp:Label id="Label2"

20: style="Z-INDEX: 104; LEFT: 24px; POSITION: absolute; TOP: 176px"

21: runat="server"

22: Width="120px">neue Website:

23:

24:

29:

30:

Die zugehörige Code-Behind-Datei:

1: public class _default : System.Web.UI.Page

2: {

3: protected System.Web.UI.WebControls.ListBox LBXWebsites;

4: protected System.Web.UI.WebControls.TextBox TextBox1;

5: protected System.Web.UI.WebControls.Label Label1;

6: protected System.Web.UI.WebControls.Label Label2;

7: protected System.Web.UI.WebControls.Button Button1;

8: protected System.Data.DataSet dataSet1;

9: protected System.Data.DataSet myDataSet = new DataSet();

10:

11: private void Page_Load(object sender, System.EventArgs e)

12: {

13: myDataSet = readDataFromXML();

14: LBXWebsites.DataSource = myDataSet;

15: LBXWebsites.DataBind();

16: }

17:

18: private DataSet readDataFromXML()

19: {

20: DataSet readDataSet = new DataSet();

21: readDataSet.ReadXml(Server.MapPath("data.xml"));

22: return readDataSet;

23: }

24:

25: private void writeDataToXML(DataSet dataToWrite)

26: {

27: dataToWrite.WriteXml(Server.MapPath("data.xml"));

28: }

29:

30: private void Button1_Click(object sender, System.EventArgs e)

31: {

32: DataView dv = new DataView(myDataSet.Tables[0]);

33: dv.Sort = "WebsiteID DESC";

34: DataRow mydr = myDataSet.Tables[0].NewRow();

35: mydr[0] = int.Parse(dv[0][0].ToString())+1;

36: mydr[1] = TextBox1.Text;

37: myDataSet.Tables[0].Rows.Add(mydr);

38: writeDataToXML(myDataSet);

39: LBXWebsites.DataSource = readDataFromXML();

40: LBXWebsites.DataBind();

41: }

42: }

Das Lesen der XML-Daten geschieht in der Methode readDataFromXML() und zeigt, wie einfach das Auslesen von XML-Dateien in ASP.NET ist: Nach dem Erzeugen eines DataSets muß nur noch dessen Methode ReadXML(), gefolgt vom Pfad zur zu lesenden XML-Datei, aufgerufen werden.

Das Schreiben der XML-Daten ist in der Methode writeDataToXML gekapselt und gestaltet sich noch einfacher. Das DataSet mit den zu schreibenden Daten wird an die Methode WriteXML() übergeben. Außerdem übergibt man auch den Namen der XML-Datei.

That's it!

Der Ordnung halber habe ich noch eine Funktion implementiert, die die WebsiteID in der XML-Datei wie einen Autowert in einer Datenbank-Tabelle beim Schreiben erzeugt.