XML-Datei in Visual Studio 2017/C# einlesen?

2 Antworten

Hier ein etwas anderes Beispiel das ich mal probiert habe mit Databindings.

Die Leere Xml Datei ist schon angelegt.

Imports System.IO

Public Class frmMain
Dim blnOnce As Boolean = False
Dim dsData As New DataSet
Dim strFolderPath As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'MsgBox(dsData.Tables(0).Rows(3).Item("Data").ToString)

Dim row As DataRow
row = dsData.Tables(0).NewRow()

row.Item("Name") = "Neues Element"
row.Item("Data") = "Daten des Neuen Elements"

dsData.Tables(0).Rows.Add(row)

BindingNavigator1.MoveLastItem.PerformClick()

End Sub

Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

BindingSource1.EndEdit()

'dsData.Tables(0).Rows(3).Item("Data") = "auf wiedersehen"

'MsgBox(dsData.Tables(0).Rows(3).Item("Data").ToString)

dsData.AcceptChanges()

dsData.WriteXml(strFolderPath & "\Data.xml", XmlWriteMode.IgnoreSchema)

End Sub

Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If blnOnce = False Then
InitializeData()
End If
End Sub

Private Function Data(ByVal strFilePath As String) As XDocument
Data = <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

'' Hier fehlt was siehe 2. Screenshot!!!
VB Dot Net
Microsoft


Oracle
Datasetinformation 1.0


Data.Save(strFilePath)
End Function

Private Sub InitializeData()
strFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
strFolderPath = strFolderPath & "\XML DataBinding"
If Directory.Exists(strFolderPath) = False Then
Directory.CreateDirectory(strFolderPath)
End If

If My.Computer.FileSystem.FileExists(strFolderPath & "\Data.xml") = False Then
Data(strFolderPath & "\Data.xml")
End If

If My.Computer.FileSystem.FileExists(strFolderPath & "\Data.xml") = True Then
dsData.ReadXml(strFolderPath & "\Data.xml")
Dim tables As DataTableCollection = dsData.Tables
Dim DetailsView As New DataView(tables(0))

'MsgBox(DetailsView.Item(DetailsView.Count - 1).Item("Data").ToString)


BindingSource1.DataSource = DetailsView
If txtName.DataBindings.Count = 0 Then
txtName.DataBindings.Add("Text", BindingSource1, "Name", True, DataSourceUpdateMode.OnPropertyChanged)
End If

If txtData.DataBindings.Count = 0 Then
txtData.DataBindings.Add("Text", BindingSource1, "Data", True, DataSourceUpdateMode.OnPropertyChanged)
End If


ListBox1.DataSource = BindingSource1
ListBox1.DisplayMember = "Name"


DataGridView1.DataSource = BindingSource1

BindingNavigator1.BindingSource = BindingSource1
End If

End Sub


End Class

Woher ich das weiß:Berufserfahrung – Softwareentewickler / Unternehmensberater bei CSDIT iR
Screenshot vom Programm - (Computer, programmieren, C Sharp) Ergänzung - (Computer, programmieren, C Sharp)

Hey ho,

Wie MeDelock schon sagte weist du der Box den ganzen Text zu. Du solltest die XML mal umbauen, damit du daraus z.B. ein Array machen kannst. Dann kannst du das folgender Maßen machen:

vorname.Text = root.Array[0];

name.Text = root.Array[1];

wohnort.Text = root.Array[2];

Dadurch hast du dann auch 3 Werte, anstelle eines Strings.

MfG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting