【问题标题】:haveing separate XmlSerializer function具有单独的 XmlSerializer 函数
【发布时间】:2013-08-01 18:59:14
【问题描述】:

我想为 xml 序列化创建通用函数,但是需要对要序列化的对象进行 typeof,但我不知道它可以是什么类型的对象(persondetails 或 logindetails)我引用了这个示例并尝试要修改但 typeof 用红色下划线请帮助我

原创

static public void SerializeToXML(Movie movie)
{  
  XmlSerializer serializer = new XmlSerializer(typeof(Movie));
  TextWriter textWriter = new StreamWriter(@"C:\movie.xml");
    serializer.Serialize(textWriter, movie);
    textWriter.Close();
}

我的代码

public class XmlSerialization
{

    static public string SerializeToXML("What type have to put here")
    {
        string xmlReturn="";
        XmlSerializer serializer = new XmlSerializer(typeof("What type have to put here"));
        TextWriter textWriter = new StreamWriter(xmlReturn);
        serializer.Serialize(textWriter, xml);
        textWriter.Close();

        return xmlReturn;
    }
}

【问题讨论】:

    标签: xml xml-serialization xmlserializer ixmlserializable


    【解决方案1】:

    这是一个使用对象作为参数的序列化函数示例(您可以传递自己的类)。

    public string Serialize(Object process)
            {
                MemoryStream stream = null;
                TextWriter writer = null;
    
                try
                {
                    stream = new MemoryStream();
                    writer = new StreamWriter(stream, Encoding.Unicode);
    
                    XmlSerializer serializer = new XmlSerializer(process.GetType());
    
                    serializer.Serialize(writer, process);
                    int count = (int)stream.Length;
                    byte[] arr = new byte[count];
                    stream.Seek(0, SeekOrigin.Begin);
                    stream.Read(arr, 0, count);
                    UnicodeEncoding utf = new UnicodeEncoding();
                    return utf.GetString(arr).Trim();
                }
                catch (Exception ex)
                {
                    return string.Empty;
                }
                finally
                {
                    if (stream != null) stream.Close();
                    if (writer != null) writer.Close();
                }
            }
    

    【讨论】:

    • 感谢 silva 为什么是内存流、编码、字节数组?
    • Memorystream 是接收序列化的流,接收的对象类型是“System.IO.Stream”,用于编写de XML 文档。该函数返回一个字符串值,因此我使用字节数组读取所有流并将其转换为字符串值。
    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多