Comment sérialiser un objet XDocument?
Je veux sérialiser un XDocument
objet. J'ai écrit ce code.
XDocument signup_xml_file = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment("signup_xml_file"),
new XElement("Student",
new XElement("univ_id", univ_id),
new XElement("personal_id",personal_id),
new XElement("user_name", user_name)));
client.Connect(host_name, port);
//connect to the server .
bf.Serialize(client.GetStream(), signup_xml_file); //serialize the signup_xml_file
- Je obtenir de l'exception suivante lors de la tentative de sérialiser les XDocument
. Est-il possible de faire la XDocument
classe Sérialisable, ou est-il un autre moyen pour envoyer mon XDocument
?
Type De Système.Xml.Linq.XDocument' en Assemblée de "Système".Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 " n'est pas marqué comme sérialisable.
OriginalL'auteur user983195 | 2011-10-09
Vous devez vous connecter pour publier un commentaire.
XDocuments ne sont pas destinés à être sérialisé. D'une manière qu'ils sont sérialiseurs eux-mêmes.
Mais vous pouvez tout simplement écrire:
signup_xml_file.Save(client.GetStream());
ce qui élimine aussi sérialiseur frais généraux.
Edit:
Et de l'autre côté, vous aurez besoin
Non, l'autre côté est tout aussi aisé de le charger à partir du Flux. Voir Modifier. Il n'y aura pas besoin d'un fichier où le Sérialiseur n'en a pas besoin.
OriginalL'auteur Henk Holterman
Je ne vois aucune raison pourquoi vous voulez le sérialiser les
XDocument
objet. Juste sérialiser la chaîne XML que vous pouvez obtenir en appelantToString()
sur le document.Et je ne vois pas de raison d'utiliser la sérialisation binaire ici à tous. Si vous n'en avez pas besoin, vous pouvez simplement écrire la chaîne de caractères XML à la sortie.
pouvez-vous expliquer plus en ce que tu veux dire ??
Vous ne souhaitez pas envoyer le
XDocument
objet sérialisé en utilisant la sérialisation binaire. Vous souhaitez envoyer les document XML, comme une chaîne de caractères. Pour ce faire, vous devez obtenir la chaîne de caractères à partir de laXDocument
.À l'aide de
ToString
est très bien pour les petits documents XML, mais si vous travaillez avec des documents XML volumineux, alors il est préférable de travailler avec des flux d'éviter d'allouer à d'immenses blocs de mémoire pour seulement quelques instants. Flux de garder tout fonctionne en douceur, par la réduction de la GC de la pression. Ma réponse montre ce que je veux dire.Une bonne raison de serialise un XDocument est de chiffrer le contenu d'un seul coup. Donc c'est plausible. Dans quel cas utiliser le XmlTextWriter pour écrire une chaîne de caractères. Puis chiffrer la chaîne.
OriginalL'auteur svick
Si vous voulez plus de contrôle sur la sérialisation de
XDocument
, utilisez leWriteTo
de la fonction et de créer votre propreXmlWriter
.Voici un exemple:
OriginalL'auteur Drew Noakes