使用XmlSerializer的问题

时间:2018-11-08 03:31:41

标签: c# xml xml-parsing xmlserializer xml-deserialization

这是我的C#代码:

        public static T Deserialize<T>(string input) where T : class
        {
            System.Xml.Serialization.XmlSerializer ser = 
              new System.Xml.Serialization.XmlSerializer(typeof(T));

            using (StringReader sr = new StringReader(input))
            {
                var test = ser.Deserialize(sr); //*this is the line that breaks*
                return (T)ser.Deserialize(sr);
            }
        }

这是我的XML

<releaseinfo>
<mediapackagedirectory>C:\\Temp\\Test1\\</mediapackagedirectory>
<revision>A</revision>
<files>
    <file>C:\\Temp\\Test1\\test1.zip</file>
    <file>C:\\Temp\\Test1\\test1.zip</file>
</files>
<target>C:\\Temp\\Target\\</target>
</releaseinfo>

这是我得到的错误:

Exception: {"There is an error in XML document (1, 2)."}
InnerException: {"<releaseinfo xmlns=''> was not expected."}

即使我的xml没有名称空间,我遇到的错误似乎也与名称空间有关。完全如图所示。

1 个答案:

答案 0 :(得分:3)

假设您有一些“ Releaseinfo”类,请在顶部添加以下属性:

[Serializable, XmlRoot("releaseinfo")]
public partial class Releaseinfo
{
...
}

更多详情:

XmlRootAttribute Class

也:

  • 问:为什么要反序列化两次?为什么不只是return (T)ser.Deserialize(sr);?第一行只是“测试代码”吗?

  • 请注意:请尽可能使用文本(相对于屏幕截图)。