Archief - [PROG][VB.NET] xml openen, veranderen en opslaan.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

klapperdaz

Legacy Member
Hey,
ik ben vb aan het leren en ben nu zowat zelf te proberen,
ik zou graag een xml openen, veranderen en terug kunen opslaan.
Ik kan het al openen en veranderen, maar bij het opslaan gebeurt er niets.
Zouden jullie eens willen kijken pls :D

Code:
Imports System
Imports System.IO
Imports System.Collections

Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim dsAuthors As New DataSet("authors")
    Dim filePath, filesave As Stream




#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
    Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
    Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem
    Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem
    Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem
    Friend WithEvents MenuItem4 As System.Windows.Forms.MenuItem
    Friend WithEvents MenuItem5 As System.Windows.Forms.MenuItem
    Friend WithEvents ToolBar1 As System.Windows.Forms.ToolBar
    Friend WithEvents Label1 As System.Windows.Forms.Label
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.DataGrid1 = New System.Windows.Forms.DataGrid
        Me.MainMenu1 = New System.Windows.Forms.MainMenu
        Me.MenuItem1 = New System.Windows.Forms.MenuItem
        Me.MenuItem2 = New System.Windows.Forms.MenuItem
        Me.MenuItem3 = New System.Windows.Forms.MenuItem
        Me.MenuItem4 = New System.Windows.Forms.MenuItem
        Me.MenuItem5 = New System.Windows.Forms.MenuItem
        Me.ToolBar1 = New System.Windows.Forms.ToolBar
        Me.Label1 = New System.Windows.Forms.Label
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'DataGrid1
        '
        Me.DataGrid1.DataMember = ""
        Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
        Me.DataGrid1.Location = New System.Drawing.Point(8, 176)
        Me.DataGrid1.Name = "DataGrid1"
        Me.DataGrid1.Size = New System.Drawing.Size(768, 424)
        Me.DataGrid1.TabIndex = 3
        '
        'MainMenu1
        '
        Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1})
        '
        'MenuItem1
        '
        Me.MenuItem1.Index = 0
        Me.MenuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem2, Me.MenuItem3, Me.MenuItem4, Me.MenuItem5})
        Me.MenuItem1.Text = "&File"
        '
        'MenuItem2
        '
        Me.MenuItem2.Index = 0
        Me.MenuItem2.Text = "&Open"
        '
        'MenuItem3
        '
        Me.MenuItem3.Index = 1
        Me.MenuItem3.Text = "&Save"
        '
        'MenuItem4
        '
        Me.MenuItem4.Index = 2
        Me.MenuItem4.Text = "Save &As"
        '
        'MenuItem5
        '
        Me.MenuItem5.Index = 3
        Me.MenuItem5.Text = "E&xit"
        '
        'ToolBar1
        '
        Me.ToolBar1.DropDownArrows = True
        Me.ToolBar1.Location = New System.Drawing.Point(0, 0)
        Me.ToolBar1.Name = "ToolBar1"
        Me.ToolBar1.ShowToolTips = True
        Me.ToolBar1.Size = New System.Drawing.Size(784, 42)
        Me.ToolBar1.TabIndex = 4
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(64, 72)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(544, 64)
        Me.Label1.TabIndex = 5
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(784, 598)
        Me.Controls.Add(Me.Label1)
        Me.Controls.Add(Me.ToolBar1)
        Me.Controls.Add(Me.DataGrid1)
        Me.Menu = Me.MainMenu1
        Me.Name = "Form1"
        Me.Text = "-"
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
        Dim myStream As Stream
        Dim openFileDialog1 As New OpenFileDialog
        openFileDialog1.Filter = "Xml files|*.xml"
        openFileDialog1.Title = "Select a xml File"

        If openFileDialog1.ShowDialog() = DialogResult.OK Then
            filePath = openFileDialog1.OpenFile()
            dsAuthors.ReadXml(filePath)
            With DataGrid1
                .DataSource = dsAuthors
                .DataMember = "authors"
                .CaptionText = .DataMember
            End With
        End If
        filePath.Close()

    End Sub

    Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
        If DataGrid1 Is Nothing Then
            Return
        End If
        Dim SaveFileDialog1 As New SaveFileDialog
        SaveFileDialog1.Filter = "Xml files|*.xml"
        SaveFileDialog1.Title = "Save a xml File"
        If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
            filesave = SaveFileDialog1.OpenFile()
            dsAuthors.WriteXml(filesave)
        End If



    End Sub
End Class

Albireo

Legacy Member
Ik heb het ook eens geprobeerd in C# en ik heb het aan de praat gekregen
(als XML-bestand ben ik vertrokken van het "standaard" voorbeeld books.xml)

Code:
        private void SaveButton_Click(object sender, EventArgs e) {
            SaveDialog.Filter = "Xml files|*.xml";
            SaveDialog.Title = "Save a xml File";
            if (SaveDialog.ShowDialog() == DialogResult.OK) {
                Stream xmlstream = SaveDialog.OpenFile();
                this.dsCatalog.WriteXml(xmlstream);
                xmlstream.Close();
            }
        }

        private void OpenButton_Click(object sender, EventArgs e) {
            OpenDialog.Filter = "Xml files|*.xml";
            OpenDialog.Title = "Open a xml File";
            if (OpenDialog.ShowDialog() == DialogResult.OK) {
                Stream xmlstream = OpenDialog.OpenFile();
                this.dsCatalog = new DataSet("Catalog");
                this.dsCatalog.ReadXml(xmlstream);
                this.grid.DataSource = this.dsCatalog;
                this.grid.DataMember = this.dsCatalog.Tables[0].TableName;
                this.grid.CaptionText = this.grid.DataMember;
                xmlstream.Close();
            }
        }

Die xmlstream.Close() bij het bewaren nodig omdat ik anders een I/O-exception kreeg bij het openen van een bestand na bewaard te hebben. Bij het openen van een XML-bestand maak ik een nieuwe dataset aan, anders wordt de inhoud van het pas geopende bestand toegevoegd aan wat er al stond. Als datamember van de datagrid gebruik ik de eerste (en enige) tabel in de dataset. En dat werkt bij mij :unsure:

Als je zegt dat er niets gebeurt bij het opslaan, bedoel je dan dat je ook geen SaveFileDialog te zien krijgt of dat de aanpassingen gewoon niet bewaard worden? En krijg je geen foutmeldingen?

klapperdaz

Legacy Member
ik krijg wel dat dialoog, maar de aanpassing word niet aangepast
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan