XML文档中存在错误(1,41)

Pra*_*eep 11 c# xml-serialization

当我正在做xml的反序列化时,我得到"XML文档中存在错误(1,41)." .任何人都可以告诉我这是什么问题.

 public static T DeserializeFromXml<T>(string xml)
        {
            T result;
            XmlSerializer ser = new XmlSerializer(typeof(T));
            using (TextReader tr = new StringReader(xml))
            {
                result = (T)ser.Deserialize(tr);
            }
            return result;
        }
Run Code Online (Sandbox Code Playgroud)

我用这个函数来做.

<?xml version='1.0' encoding='utf-16'?>
<Message>
<FirstName>Hunt</FirstName>
<LastName>DAvid</LastName>
</Message>
Run Code Online (Sandbox Code Playgroud)

sll*_*sll 17

确保您的Message类如下所示:

[Serializable, XmlRoot("Message")]
public class Message
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这对我很好:

string xml = File.ReadAllText("c:\\Message.xml");
var result = DeserializeFromXml<Message>(xml);
Run Code Online (Sandbox Code Playgroud)

MSDN,XmlRoot.ElementName:

在XML文档实例中生成和识别的XML根元素的名称.默认值是序列化类的名称.

所以可能是你的类名不是Message,这就是反序列化器无法使用默认行为找到它的原因.