Leistungen
Leistungen
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Coaching
Support
Softwareentwicklung
Entwickler-Vermittlung
.NET/Visual Studio
TFS/ALM/Scrum
Webprogrammierung
PowerShell
Konditionen
Anfrage/Kontakt
Beratung/Coaching
Beratung/Coaching
Beratungsthemen
Coaching
Unsere Berater
Referenzkunden
Konditionen
Angebotsanfrage
In-House-Schulungen
In-House-Schulungen
Überblick
Themen/Fachgebiete
Schulungskonfigurator
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
Moderne Webanwendungen
TFS/ALM/Scrum
PowerShell
Konferenzvortraege
Referenzkunden
Unsere Trainer
Konditionen
Angebotsanfrage
Offene Schulungen
Offene Schulungen
Überblick .NET-Seminare
.NET/C#-Basisseminar
WPF (Desktop)
ASP.NET/AJAX (Web)
WCF/WF (SOA)
ADO.NET/EF (Data)
Windows PowerShell
.NET, C#, VB, Visual Studio
.NET, C#, VB, Visual Studio
Startseite
Beratung/Training
Offene .NET-Seminare
Einführung
Lexikon
Artikel
Bücher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0/4.5
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
PowerShell
PowerShell
Überblick
Beratung
In-House-Schulungen
Öffentliche Schulungen
Codebeispiele
Commandlet Extensions
Offene PowerShell-Seminare
Inhouse-Seminare
Windows
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog
Lexikon
Downloads
Support
Kontakt
Literaturtipps
Publikationen
Publikationen
Redaktionsbüro
Bücher
Fachartikel
Leser-Portal
Autoren gesucht!
Rezensionen
Über uns
Über uns
Holger Schwichtenberg
Team
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Site Map
Weitere Websites
Tag Cloud
Impressum
Rechtliches

Beispiel zur Steuerung der XML-Serialisierung mit Meta-Attributen
Codebeispiel für Visual Basic .NET (VB.NET) und CSharp (C#)

Liste aller Codebeispiele

Beispiel zur Steuerung der XML-Serialisierung mit Meta-Attributen

Ein Beispiel zum Einsatz der Klasse System.Xml.Serialization.XmlSerializer aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Die Steuerung der Serialisierung beim XML-Serialisierer erfolgt durch Meta-Attribute. Es gibt zahlreiche Meta-Attribute für den Zweck, das folgende Beispiel demonstriert zwei wichtige:
- <XmlAttributeAttribute()>
Dieses Meta-Attribut bewirkt, dass das damit versehene Klassenattribut in ein XML-Attribut und nicht – wie es Standard ist – in ein XML-Element serialisiert wird.
- <XmlIgnore()>
Dieses Meta-Attribut bewirkt, dass das damit versehene Klassenattribut nicht serialisiert wird.

Das Attribut <System.NonSerialized()>, das zur Ausklammerung von Attributen beim Binär- und SOAP-Serialisierer verwendet wird, wirkt nicht auf den XML-Serialisierer.

Beispiel


Das folgende Beispiel zeigt beide o.g. Meta-Attribute in der Anwendung.

Programmcodebeispiele Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Klasse für benutzerdefinierte XML-Serialisierung
' (C) Holger@Schwichtenberg.de
' ============================
<Serializable()> Public Class Person3
  Public Name As String
  Public Vorname As String
  <XmlAttributeAttribute()> _
  Public Geschlecht As Char
  Public Geb As Date
  <XmlIgnore()> Public Kinderanzahl As Byte
End Class

Sub serial_kontrolle_2()
  Dim p As New Person3()
  p.Vorname = "Holger"
  p.Name = "Schwichtenberg"
  p.Geb = #8/1/1972#
  p.Geschlecht = "m"
  p.Kinderanzahl = 0

  xml_serialize(p, "h:\data\person3.xml")
End Sub

Programmcodebeispiele CSharp (C#)

using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.IO;
using System.Xml.Serialization;

using FCL_Buch;

namespace FCL_Buch._System_Runtime_Serialization {

  [Serializable()]
  public class Person3 {

   public string Name;
   public string Vorname;
   public string Taetigkeiten;
   public byte gehalt;
   [XmlAttributeAttribute()] public char Geschlecht;
   [System.NonSerialized()] public DateTime Geb; // Attribut wirkt nicht auf XML-Serialisierer
   [XmlIgnore()] public byte Kinderanzahl;

  }
}

using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.IO;
using System.Xml.Serialization;

using FCL_Buch;

namespace FCL_Buch._System_Runtime_Serialization {

  public class Samples_Kontrolliertes_Serialisieren {
public void Serial_Kontrolle_2() {

   Person3 p = new Person3();

   FclOutput.PrintOut("Benutzerdef_XML_Serialisieren_test()");

   p.Vorname = "Holger";
   p.Name = "Schwichtenberg";
   p.Geb = DateTime.Parse("8/1/1972");
   p.Geschlecht = 'm';
   p.Kinderanzahl = 0;
   p.gehalt = 6;
   SerializationHelper.Xml_Serialize(p, @"..\_daten\person3.xml");
   SerializationHelper.Bin_Serialize(p, @"..\_daten\person3.bin");
   SerializationHelper.Soap_Serialize(p, @"..\_daten\person3.soap.xml");

   try {
   p = (Person3)SerializationHelper.Xml_Deserialize(p.GetType(), @"..\_daten\serial\person3.xml");
   FclOutput.PrintOut(p.Vorname + " " + p.Name + " hat am " + p.Geb + " Geburtstag!");
   } catch ( Exception ex ) {
   FclOutput.PrintOut("XML Deserialisierung nicht möglich: " + ex.Message);
   }

   try {
   p = (Person3)SerializationHelper.Bin_Deserialize(@"..\_daten\serial\person3.bin");
   FclOutput.PrintOut(p.Vorname + " " + p.Name + " hat am " + p.Geb + " Geburtstag!");
   } catch ( Exception ex ) {
   FclOutput.PrintOut("Binäre Deserialisierung nicht möglich: " + ex.Message);
   }

   try {
   p = (Person3)SerializationHelper.Soap_Deserialize(@"..\_daten\serial\person3.soap.xml");
   FclOutput.PrintOut(p.Vorname + " " + p.Name + " hat am " + p.Geb + " Geburtstag!");
   } catch ( Exception ex ) {
   FclOutput.PrintOut("SOAP Deserialisierung nicht möglich: " + ex.Message);
   }
   }
  }
}

Querverweise

Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.Xml.Serialization'
Übersicht über den FCL-Namensraum 'System.Xml.Serialization'
Portal dotnetframework.de