Sérialiser et Stocker une Image dans un Fichier XML
Eu un peu d'un problème. J'ai un programme qui construit une collection observable des Utilisateurs. L'Utilisateur dispose d'un Firstname, Lastname, et de l'Image. Je peux ajouter l'utilisateur à la collection observable, mais aussi je veux sauver la collecte et de la charge à chaque fois que je vais rouvrir le programme.
Mon problème est que, bien que son assez facile de sauver un firstname et lastname, l'auteur ne peut pas écrire l'image pour le fichier xml. Est-il un moyen de contourner cela?
Voici ce que j'ai à ce jour:
de la collection observable:
ObservableCollection<VendorClass> ProfileList = new ObservableCollection<VendorClass>();
la problématique de l'écrivain:
XmlSerializer xs = new XmlSerializer(typeof(ObservableCollection<VendorClass>));
using (StreamWriter wr = new StreamWriter("vendors.xml")) //Data/customers.xml
{
xs.Serialize(wr, ProfileList);
}
Des idées? Et si il existe une solution pour écrire dans une image, est-il un moyen viable de le lire de nouveau?
OriginalL'auteur user2453973 | 2013-09-17
Vous devez vous connecter pour publier un commentaire.
XmlSerializer ne peut pas sérialiser ou désérialiser le WPF types d'images comme BitmapImage etc. Il est cependant en mesure de sérialiser des tableaux d'octets. Donc, vous pouvez ajouter un
byte[] ImageBuffer
propriété à votre Personne de la classe, qui contient les données d'image binaire. Vous serait alors également définir laXmlIgnore
attribut sur laImage
propriété de supprimer son (dé)sérialisation, et de définirXmlElement("Image")
sur leImageBuffer
propriétés (de)sérialiser comme<Image>...</Image>
.Cette approche a également été suggéré pour les propriétés de type Bitmap dans cette réponse.
Vous êtes les bienvenus. Une solution alternative serait d'avoir la classe Utilisateur de mettre en œuvre la
IXmlSerializable
interface, comme indiqué dans le cette réponse. Vous serait cependant (de)serialize tous propriétés de la classe dans la mise en œuvre.OriginalL'auteur Clemens
Vous base64 encode l'image à convertir en chaîne, puis d'écrire que dans une section CDATA. Voir Comment sérialiser une chaîne de caractères comme CDATA à l'aide de XmlSerializer?
OriginalL'auteur Robert Levy