C# XML Serialization/DeSerialization [closed]

安稳与你 提交于 2019-12-23 03:17:06

问题


I'm having a look at XML Serialization and have serialized as such:

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();
}

I use it as such:

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

Which produces:

<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>

For some reason, I can't include the header which was xml version 1.0 encoding UTF8.

Now, when I try to deserialize with

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;
}

I get an error saying invalid xml at 2,2. Any idea what I am doing wrong?

Thanks


回答1:


Not sure if it's a typo, or a genuine mistake in the output, but you have an erroneous space in your XML.

< /ArrayOfInputData>



回答2:


Have now fixed it:

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);


来源:https://stackoverflow.com/questions/5661227/c-sharp-xml-serialization-deserialization

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!