2010-11-20 12 views

Antwort

28

Hier ist eine weniger als in der Tiefe Beschreibung, aber ich denke, ein guter Ausgangspunkt.

XmlRootAttribute - Wird verwendet, um Schemainformationen für die Klasse bereitzustellen, die das Stammelement des Objektdiagramms ist, das serialisiert wird. Dies kann nur auf Klassen, Strukturen, Enums, Schnittstellen von Rückgabewerten angewendet werden.

XmlElementAttribute - Bietet Schemainformationen für Eigenschaften einer Klasse, die steuert, wie sie als untergeordnete Elemente serialisiert werden. Dieses Attribut kann nur auf Felder (Member der Klassenvariablen), Eigenschaften, Parameter und Rückgabewerte angewendet werden.

Die ersten beiden XmlRootAttribute und XmlElementAttribute beziehen sich auf den XmlSerializer. Während der nächste, wird von den Laufzeitformatieren verwendet und gilt nicht bei Verwendung von XmlSerialization.

SerializableAtttrible - Wird verwendet, um anzugeben, dass der Typ von den Runtime-Formatierern wie SoapFormatter oder BinaryFormatter serialisiert werden kann. Dies ist nur erforderlich, wenn Sie den Typ mit einem der Formatierer serialisieren müssen und auf Delegaten, Enums, Strukturen und Klassen angewendet werden können.

Hier ist ein kurzes Beispiel, das helfen könnte, das Obige zu verdeutlichen.

// This is the root of the address book data graph 
// but we want root written out using camel casing 
// so we use XmlRoot to instruct the XmlSerializer 
// to use the name 'addressBook' when reading/writing 
// the XML data 
[XmlRoot("addressBook")] 
public class AddressBook 
{ 
    // In this case a contact will represent the owner 
    // of the address book. So we deciced to instruct 
    // the serializer to write the contact details out 
    // as <owner> 
    [XmlElement("owner")] 
    public Contact Owner; 

    // Here we apply XmlElement to an array which will 
    // instruct the XmlSerializer to read/write the array 
    // items as direct child elements of the addressBook 
    // element. Each element will be in the form of 
    // <contact ... /> 
    [XmlElement("contact")] 
    public Contact[] Contacts; 
} 

public class Contact 
{ 
    // Here we instruct the serializer to treat FirstName 
    // as an xml element attribute rather than an element. 
    // We also provide an alternate name for the attribute. 
    [XmlAttribute("firstName")] 
    public string FirstName; 

    [XmlAttribute("lastName")] 
    public string LastName; 

    [XmlElement("tel1")] 
    public string PhoneNumber; 

    [XmlElement("email")] 
    public string EmailAddress; 
} 

die oben, eine Instanz von Address serialisierten mit einem XmlSerializer Da

XML im folgende Format geben würde
<addressBook> 
    <owner firstName="Chris" lastName="Taylor"> 
    <tel1>555-321343</tel1> 
    <email>[email protected]</email> 
    </owner> 
    <contact firstName="Natasha" lastName="Taylor"> 
    <tel1>555-321343</tel1> 
    <email>[email protected]</email> 
    </contact> 
    <contact firstName="Gideon" lastName="Becking"> 
    <tel1>555-123423</tel1> 
    <email>[email protected]</email> 
    </contact> 
</addressBook> 
+0

Können Sie sagen, wie wir die Attribiutes für ein XML hinzufügen, die einen Tag hat für alle Kontakte, innerhalb des Adressbuch-Tags? – Dhanashree

+2

@Dhanashree, möchten Sie die Kontaktelemente in ein übergeordnetes Kontakteelement einbinden? Wenn dies der Fall ist, können Sie [XmlElement ("Kontakt")] aus den Kontakten "Kontakt []" entfernen. Wenn Sie die Namen dann steuern möchten, können Sie das aktuelle Attribut durch [XmlArray ("Kontakte")], XmlArrayItem (" contact ")], die den Namen des Stamms und der Elemente in der Sammlung steuern. –

+0

Danke! Das hat geholfen :) – Dhanashree

Verwandte Themen