How do I convert a C# class to an XMLElement or XMLDocument

前端 未结 3 1029
春和景丽
春和景丽 2020-12-30 06:52

I have an C# class that I would like to serialize using XMLSerializer. But I would like to have it serialized to a XMLElement or XMLDocument. Is this possible or do I have t

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-30 07:31

    I had this problem too, and Matt Davis provided a great solution. Just posting some code snippets, since there are a few more details.

    Serializing:

    public static XmlElement SerializeToXmlElement(object o)
    {
        XmlDocument doc = new XmlDocument();
    
        using(XmlWriter writer = doc.CreateNavigator().AppendChild())
        {
            new XmlSerializer(o.GetType()).Serialize(writer, o);
        }
    
        return doc.DocumentElement;
    }
    

    Deserializing:

    public static T DeserializeFromXmlElement(XmlElement element)
    {
        var serializer = new XmlSerializer(typeof(T));
    
        return (T)serializer.Deserialize(new XmlNodeReader(element));
    }
    

提交回复
热议问题