c# XML序列化/反序列化

本文关键字:反序列化 序列化 XML | 更新日期: 2023-09-27 17:50:21

我正在看一下XML序列化,并已序列化为:

public static string Serialize<T>(T data)
{
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
    //Overridden to use UTF8 for compatability with Perl XML::DOM
    StringWriterUTF8 sw = new StringWriterUTF8();
    xmlSerializer.Serialize(sw, data);
    return sw.ToString();
}

我这样使用它:

string serializedData = Serializer.Serialize<List<InputData>>(rawDataCollection);

生产:

<ArrayOfInputData xmlns:xsi="http://www.w3.org/2001/XMLSchema-                instance"                 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <InputData>
        <dose>100mg/kg</dose> 
        <compound>AZ13279746-001</compound> 
    </InputData>
</ArrayOfInputData>

由于某些原因,我不能包含xml版本1.0编码UTF8的头。

现在,当我尝试用

反序列化时
public static object DeSerialize<T>(string data)
{
    StringReader rdr = new StringReader(data);
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
    T i;
    i = (T)xmlSerializer.Deserialize(rdr);
    return i;
}

我得到一个错误说无效的xml在2,2。知道我做错了什么吗?

谢谢

c# XML序列化/反序列化

已修复:

public static object DeSerialize<T>(string data)
    {
       StringReader rdr = new StringReader(data);
       XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));

       var result = (T)xmlSerializer.Deserialize(rdr);

       return result; 

    }
var fl = (List<InputData>)Serializer.DeSerialize<List<InputData>>(serializedData);

不确定这是打字错误,还是输出中真正的错误,但是您的XML中有一个错误的空格。

< /ArrayOfInputData>