C#将异常对象转换为XML文档

C#将异常对象转换为XML文档,c#,xml,C#,Xml,我希望能够创建一个XML文档,从异常对象保存到SQL数据库。有没有一种方法可以轻松地将异常对象转换为XML文档?我希望能够做到以下几点: public void WriteError(Exception ex) { var doc = new XmlDocument(); doc.Load(ex); sql.Insert(doc); } 您正在寻找的是XmlSerializer。序列化正在更改为字符串,XmlSerializer将进一步改进。我使用扩展方法将生成的XML

我希望能够创建一个XML文档,从异常对象保存到SQL数据库。有没有一种方法可以轻松地将异常对象转换为XML文档?我希望能够做到以下几点:

public void WriteError(Exception ex)
{
    var doc = new XmlDocument();
    doc.Load(ex);
    sql.Insert(doc);
}

您正在寻找的是XmlSerializer。序列化正在更改为字符串,XmlSerializer将进一步改进。我使用扩展方法将生成的XML写入文件,但您可以根据自己的需要对其进行调整:

public static void WriteToXmlFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
    {
        TextWriter writer = null;
        try
        {
            var serializer = new XmlSerializer(typeof(T));
            writer = new StreamWriter(filePath, append);
            serializer.Serialize(writer, objectToWrite);
        }
        finally
        {
            if (writer != null)
                writer.Close();
        }
    }
public static void WriteToXmlFile(字符串文件路径,T objectToWrite,bool append=false),其中T:new()
{
TextWriter=null;
尝试
{
var serializer=newxmlserializer(typeof(T));
writer=newstreamwriter(文件路径,追加);
serializer.Serialize(writer,objectToWrite);
}
最后
{
if(writer!=null)
writer.Close();
}
}

以下是如何使用@forkfork建议的
XmlSerializer

public void WriteError(Exception ex)
{
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(Exception));
    using (var memoryStream = new MemoryStream()) {
        xmlSerializer.Serialize(memoryStream, ex);
        var streamReader = new StreamReader(memoryStream);
        sql.Insert(streamReader.ReadToEnd());
    }
}
使用xml linq:

       public static void WriteError(Exception ex)
        {
            XDocument doc = new XDocument("Error", new object[] {
                new XElement("message", ex.Message),
                new XElement("stacktrace", ex.StackTrace),
                new XElement("helplink", ex.HelpLink)
            });

            sql.Insert(doc);
        }
您可以检查一下,这里可能已经回答了这个问题