Was ist der Unterschied zwischen der Verwendung von XMLRoot/XMLElement und der Verwendung von Serializable() - Attributen? Woher weiß ich, wann ich sie verwenden soll?Unterschied zwischen der Verwendung von XMLRoot/XMLElement und der Verwendung von Serializable() - Attributen (in C#)
Antwort
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>
- 1. C# DataGridView.DataSource Unterschied zwischen der Verwendung von BindingSource und nicht
- 2. Unterschied zwischen der Verwendung von train_test_split und cross_val_score in sklearn.cross_validation
- 3. Unterschied zwischen der Verwendung von Anführungszeichen und Anführungszeichen in Python
- 4. Unterschied zwischen der Verwendung von `--save` und ohne es bei der Verwendung von Typings
- 5. gibt es einen Unterschied zwischen [Serializable] und [Serializable()] in C#?
- 6. Verwendung von Attributen ... INotifyPropertyChanged
- 7. Unterschied zwischen der Verwendung von VertexPositionNormalTexture und VertexPositionTexture
- 8. Unterschied zwischen der Verwendung von `MySql.Data` und` MySql.Data.MySqlClient`
- 9. Unterschied zwischen der Verwendung von UINavigationController und UINavigationBar
- 10. Service Fabric - Unterschied zwischen der Verwendung von app.config und settings.xml?
- 11. Unterschied zwischen der Verwendung von StringTokenizer und String.split()?
- 12. Unterschied zwischen der Verwendung von Zeichenzeigern und Zeichenfeldern
- 13. Auswirkungen der Verwendung von Serializable- und Snapshot-Isolation gleichzeitig
- 14. Unterschied zwischen der Verwendung von Trace und TraceSource
- 15. Unterschied zwischen der Verwendung von requests.get() und requests.session(). Get()?
- 16. Unterschied zwischen der Verwendung von fork/execvp und Systemaufruf
- 17. Unterschied zwischen der Verwendung von Immediate Scheduler und keine Verwendung von Scheduler überhaupt
- 18. Was ist der Unterschied zwischen der Verwendung externer und # Headerdateien?
- 19. Ist die Verwendung von Attributen in .NET (C#) teuer?
- 20. Was ist der Unterschied zwischen der Rückgabe von bind und dem Ergebnis der Verwendung von function()
- 21. Worin besteht in Scala der Unterschied zwischen der Verwendung des _ und der Verwendung eines benannten Bezeichners?
- 22. Was ist der Unterschied zwischen der Verwendung von "" und "" und() beim Deklarieren von Variablen?
- 23. Was ist der Unterschied zwischen der ServiceBus/ServiceBusTrigger-Methode und der Verwendung von QueueClient bei Verwendung von Azure Bus Service?
- 24. Was ist der Unterschied zwischen der Verwendung und der Einbindung in C++?
- 25. Inelegant/falsche Verwendung von Attributen?
- 26. Java: Unterschied in der Verwendung zwischen Thread.interrupted() und Thread.isInterrupted()?
- 27. Angemessene Verwendung von benutzerdefinierten Attributen?
- 28. Unterschied zwischen der Verwendung von getConnection() und der Verwendung von Pool direkt in node.js mit node-mysql-Modul?
- 29. Verwendung von __init & __exit-Attributen
- 30. Unterschied zwischen der Verwendung dieser beiden Standardkonstruktoren?
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
@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. –
Danke! Das hat geholfen :) – Dhanashree