Hallo Leute,
da für die Kommunikation mit Webshop-Systemen,
Datenübertragung zu Logistikunternehmen, etc. sehr häufig
XML-Schnittstellen benötigt werden und ich in einem anderen Thread
gerade einen Beitrag dazu verfasst habe, habe ich ein kleines Tutorial
für euch geschrieben.
Zunächst einmal habe ich schon sehr häufig
gesehen, dass XML-Dokumente einzelnd aufgebaut werden. Dazu gleich
vorweg: XML schreibt man nicht sondern man serialisiert XML-Dateien.
Hierfür
benötigt ihr zunächst eine serialisierbare Datenklasse. In unserem
Beispiel eine vereinfachte DataModell-Klasse, welche die Daten eines
Artikels beinhaltet:
Serialisierbare Klasse
Wir wechseln danach in unsere Klasse in der wir Mitarbeiter verarbeiten und setzen auch hier im Imports:
Als
nächstes erstellen wir uns eine serialisierbare Liste dieser Objekte
wahlweise in unserer Form oder der Klasse wo sie benötigt wird:
Für die Einsteiger unter uns hier nochmal die Initialisierung eines Objektes:
Als nächstes benötigen wir zwei Methoden zum verarbeiten der XML (lesen und schreiben)
Methoden zum Verarbeiten
Hier noch ein abschließendes Code-Beispiel:
Code-Beispiel
Form-Load Event:
ImportButton-Click Event:
ExportButton-Click Event:
Edit aufgrund der Anmerkung von @Nofear23m:
Vielen Dank für deine Nachricht in der Konversation. Damit das ganze auch eine Schnittstelle wird, braucht ihr natürlich die .xsd-Datei der Gegenseite, die das XML-Schema enthält. Aus dieser Schema-Datei könnt ihr die Serialisierbaren Klassen dann autogenerieren. Dies hat den Vorteil, dass die Schnittstelle auf beiden Seiten exakt gleich aufgebaut ist und somit in jedem Fall lauffähig ist.
Viel Spaß und Erfolg damit!
da für die Kommunikation mit Webshop-Systemen,
Datenübertragung zu Logistikunternehmen, etc. sehr häufig
XML-Schnittstellen benötigt werden und ich in einem anderen Thread
gerade einen Beitrag dazu verfasst habe, habe ich ein kleines Tutorial
für euch geschrieben.
Zunächst einmal habe ich schon sehr häufig
gesehen, dass XML-Dokumente einzelnd aufgebaut werden. Dazu gleich
vorweg: XML schreibt man nicht sondern man serialisiert XML-Dateien.
Hierfür
benötigt ihr zunächst eine serialisierbare Datenklasse. In unserem
Beispiel eine vereinfachte DataModell-Klasse, welche die Daten eines
Artikels beinhaltet:
VB.NET-Quellcode
- Imports System.Xml.Serialization
- <Serializable>
- Public Class Mitarbeiter
- <XmlElement(ElementName:="Personalnummer")>
- Public Property Personalnummer As Integer
- <XmlElement(ElementName:="Vorname")>
- Public Property Vorname As String
- <XmlElement(ElementName:="Nachname")>
- Public Property Nachname As String
- <XmlElement(ElementName:="Geburtsdatum")>
- Public Property Geburtsdatum As Date
- End Class
Wir wechseln danach in unsere Klasse in der wir Mitarbeiter verarbeiten und setzen auch hier im Imports:
Als
nächstes erstellen wir uns eine serialisierbare Liste dieser Objekte
wahlweise in unserer Form oder der Klasse wo sie benötigt wird:
Für die Einsteiger unter uns hier nochmal die Initialisierung eines Objektes:
Als nächstes benötigen wir zwei Methoden zum verarbeiten der XML (lesen und schreiben)
VB.NET-Quellcode
- Private Sub Write()
- If File.Exists(Filename) Then
- File.Delete(Filename)
- End If
- If Mitarbeiterliste is Nothing
- Mitarbeiterliste = New List(of Mitarbeiter)
- End If
- Dim Serializer As XmlSerializer = New XmlSerializer(Mitarbeiterliste.GetType)
- Dim XStream As StreamWriter
- Dim EmptyNamespace As New XmlSerializerNamespaces()
- EmptyNamespace.Add("", "")
- Using FileStream As New FileStream(Filename, FileMode.Create)
- XStream = New StreamWriter(FileStream, Encoding.UTF8)
- Serializer.Serialize(XStream, Mitarbeiterliste, EmptyNamespace)
- FileStream.Close()
- End Using
- End Sub
- Private Sub Read()
- If Mitarbeiterliste Is Nothing Then
- Mitarbeiterliste = New List(Of Mitarbeiter)
- End If
- Dim Serializer As XmlSerializer = New XmlSerializer(Mitarbeiterliste.GetType)
- Dim EmptyNamespace As New XmlSerializerNamespaces()
- EmptyNamespace.Add("", "")
- Using FileStream As New FileStream(Filename, FileMode.Open)
- Mitarbeiterliste = Serializer.Deserialize(FileStream)
- FileStream.Close()
- End Using
- End Sub
Hier noch ein abschließendes Code-Beispiel:
Form-Load Event:
ImportButton-Click Event:
ExportButton-Click Event:
Edit aufgrund der Anmerkung von @Nofear23m:
Vielen Dank für deine Nachricht in der Konversation. Damit das ganze auch eine Schnittstelle wird, braucht ihr natürlich die .xsd-Datei der Gegenseite, die das XML-Schema enthält. Aus dieser Schema-Datei könnt ihr die Serialisierbaren Klassen dann autogenerieren. Dies hat den Vorteil, dass die Schnittstelle auf beiden Seiten exakt gleich aufgebaut ist und somit in jedem Fall lauffähig ist.
Viel Spaß und Erfolg damit!
Ein Computer wird das tun, was du programmierst - nicht das, was du willst.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Yanbel“ ()