Si habéis probado de serializar un objeto que implemente IDictionary os habréis dado cuenta de que el sistema genera una excepción, indicando que no sabe como serializar dichos objetos.
Por suerte existe una solución bastante fácil (explicada tanto aquí como aquí): implementar la interfaz IXmlSerializable. En los métodos ReadXml ponemos el código para deserializar y en WriteXml el código de serializar.
A continuación un ejemplo (el mérito no es mío, si no de los que han hecho los enlaces anteriores, yo lo único que he hecho ha sido adaptarlo para que use genéricos). Los objetos de la clase SerializableDictionary se pueden serializar a Xml de la manera tradicional. Para más información pasaros por los enlaces anteriores ;-)
public class SerializableDictionary : Dictionary, IXmlSerializable
{
const string NS = <A HREF="">http://blogs.clearscreen.com</A>;
#region IXmlSerializable Members
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(System.Xml.XmlReader r)
{
XmlSerializer keySer = new XmlSerializer(typeof(K));
XmlSerializer valueSer = new XmlSerializer(typeof(V));
r.Read();
r.ReadStartElement("dictionary", NS); while (r.NodeType != System.Xml.XmlNodeType.EndElement)
{
r.ReadStartElement("item", NS);
r.ReadStartElement("key", NS);
K key = (K)keySer.Deserialize(r);
r.ReadEndElement();
r.ReadStartElement("value", NS);
V value = (V)valueSer.Deserialize(r);
r.ReadEndElement();
this.Add(key, value);
r.ReadEndElement();
r.MoveToContent();
}
r.ReadEndElement();
}
public void WriteXml(System.Xml.XmlWriter w)
{
XmlSerializer keySer = new XmlSerializer(typeof(K));
XmlSerializer valueSer = new XmlSerializer(typeof(V));
w.WriteStartElement("dictionary", NS); foreach (K key in this.Keys)
{
w.WriteStartElement("item", NS);
w.WriteStartElement("key", NS);
keySer.Serialize(w, key);
w.WriteEndElement();
w.WriteStartElement("value", NS);
V value = this[key];
valueSer.Serialize(w, value);
w.WriteEndElement();
w.WriteEndElement();
}
w.WriteEndElement();
}
#endregion
}
Editado @ 04/10: Eliminados unos molestos saltos de línea que impedían leer bien el código fuente... ^_^
posted on Monday, October 02, 2006 6:00 PM
Feedback
# re: Serializar IDictionary a XML
11/18/2007 8:06 PM |
ok
# re: Serializar IDictionary a XML
12/2/2007 9:49 PM |
Hi dear, i read this good information and find more interest informations for you. thanks.
# re: Serializar IDictionary a XML
12/9/2007 10:53 PM |
We offer the largest collection of polyphonic ringtones, monophonic ringtones, mobile videos, color wallpapers, color screensavers, real sounds.
# re: Serializar IDictionary a XML
12/30/2007 5:46 PM |
If you are looking for the replica watch and information about it, you came to the right place.
# re: Serializar IDictionary a XML
7/16/2008 9:48 PM |
hakkari urfa mynet
# re: Serializar IDictionary a XML
10/23/2008 1:45 AM |
Thanks very good !.
# re: Serializar IDictionary a XML
11/22/2008 12:27 AM |
thanks very.
# re: Serializar IDictionary a XML
12/6/2008 2:04 AM |
thanks very.
# re: Serializar IDictionary a XML
12/15/2008 4:36 AM |
thank you
12/23/2008 8:04 AM |
You’ve got a lot of cool posts here. Really like it. It served to be helpful. Thanks on that.
http://www.burclarfal.com
# re: Serializar IDictionary a XML
1/25/2009 5:48 AM |
thanks
# re: Serializar IDictionary a XML
1/25/2009 5:49 AM |
thanks
# re: Serializar IDictionary a XML
1/25/2009 5:50 AM |
thanks
# re: Serializar IDictionary a XML
1/25/2009 5:51 AM |
thanks
# re: Serializar IDictionary a XML
1/25/2009 5:52 AM |
thanks
# re: Serializar IDictionary a XML
2/21/2009 4:49 AM |
Thank's
# re: Serializar IDictionary a XML
2/21/2009 9:55 AM |
Danke Schön..
# re: Serializar IDictionary a XML
3/7/2009 11:03 PM |
# re: Es mi hardware compatible con mi Vista?2/21/2009 7:50 AM | penis büyütücü hap
# re: Serializar IDictionary a XML
3/21/2009 9:40 PM |
Wonderful Site! Thank You..
# re: Serializar IDictionary a XML
3/21/2009 9:40 PM |
Wonderful Site! Thank You..
# re: Serializar IDictionary a XML
9/27/2009 8:44 AM |
hims, thanks.
# re: Serializar IDictionary a XML
10/11/2009 7:18 AM |
Thanks for the informative article.
# re: Serializar IDictionary a XML
10/11/2009 7:18 AM |
good article
# re: Serializar IDictionary a XML
10/11/2009 7:19 AM |
good share
# re: Serializar IDictionary a XML
11/5/2009 9:29 AM |
hii
# re: Serializar IDictionary a XML
11/8/2009 9:36 PM |
Wonderful!Thank you for sharing your ideas.
# re: Serializar IDictionary a XML
11/15/2009 5:42 PM |
How are you
# re: Serializar IDictionary a XML
11/16/2009 3:55 AM |
How are you
# re: Serializar IDictionary a XML
11/16/2009 5:16 AM |
Hii are you
# re: Serializar IDictionary a XML
12/10/2009 2:32 AM |
sinemalar
# re: Serializar IDictionary a XML
12/22/2009 8:14 AM |
hi how are you all
# re: Serializar IDictionary a XML
1/6/2010 12:59 PM |
okkey
# re: Serializar IDictionary a XML
1/17/2010 8:51 AM |
okey
# re: Serializar IDictionary a XML
2/4/2010 2:45 AM |
good this page
# re: Serializar IDictionary a XML
3/13/2010 5:52 AM |
Thanks for everything.
# re: Serializar IDictionary a XML
3/13/2010 5:53 AM |
Yes, very good.
# re: Serializar IDictionary a XML
3/18/2010 12:58 AM |
Good recommended website.
# re: Serializar IDictionary a XML
3/18/2010 12:59 AM |
Good recommended website.