J'ai deux classes, "société" dérivé de Treenode, et "document".Sérialiser/désérialiser XML dérivé de Treenode
[Serializable]
[XmlRoot("Company")]
public class Company : TreeNode, IXmlSerializable
{
private string _x;
private string _y;
public Company() { }
[XmlElement("X")]
public string X { get; set; }
[XmlElement("Y")]
public string Y { get; set; }
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
}
public void ReadXml(XmlReader reader)
{
if (reader.MoveToContent() == XmlNodeType.Element && reader.LocalName == "Company")
{
x = reader["X"].ToString;
y = reader["Y"].ToString;
}
}
public void WriteXml(XmlWriter writer)
{
writer.WriteElementString("X", this.X.ToString());
writer.WriteElementString("Y", this.Y.ToString());
}
}
public class Document
{
private int _id;
private string _name;
private Company _company;
public Document() { }
[XmlElement("ID")]
public int ID { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("Company")]
public Company Comp { get; set; }
}
Lorsque j'essaie de sérialiser un document, puis enregistrez dans un fichier, son travail. Mais quand je désérialise, le paramètre du lecteur est toujours nul. Des solutions?
Ceci est mon code pour désérialiser. "sr" est une variable qui contient du texte xml.
var sr = new StreamReader(ms);
var myStr = sr.ReadToEnd();
XmlSerializer serializer = new XmlSerializer(typeof(List<Document>));
using (TextReader tr = new StringReader(myStr))
{
List<Document> docu = (List<Document>)serializer.Deserialize(tr);
}
J'essaie de mettre en œuvre ISerialization et le débogage, mais jamais tiré, et essayer de overide sérialisation et de la méthode deserialize, et pas de chance.
J'utilise .NET Framework 3.5
Avez-vous vérifié votre XML résultant? – Fildor
@Fildor Oui, j'ai vérifié. Lors de la désérialisation, les données de l'entreprise ne se remplissent jamais. – Blishton
Essayez de supprimer IXmlSerializable et les méthodes GetSchema, ReadXml et WriteXML dans la classe Company. Puis réessayez. – Fildor