C# 使用XMLSerializer反序列化XML

C# 使用XMLSerializer反序列化XML,c#,xml,xml-deserialization,C#,Xml,Xml Deserialization,我正在尝试使用XmlSerializer反序列化XML文件。但是我得到了这个异常:XML文档(1,41)中有一个错误。内部异常消息“ReplicationStatus xmlns='DistributionServices'不应出现。” XML文件如下所示: <?xml version="1.0" encoding="UTF-8" ?> <ts:Status xmlns:ts="DistributionServices"> <Server>DUMMY</

我正在尝试使用XmlSerializer反序列化XML文件。但是我得到了这个异常:XML文档(1,41)中有一个错误。内部异常消息“ReplicationStatus xmlns='DistributionServices'不应出现。”

XML文件如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<ts:Status xmlns:ts="DistributionServices">
<Server>DUMMY</Server>
<Object>DUMMY</Object>
<Port>123</Port>
<Code>DUMMY</Code>
<Key>b0ed5e56</Key>
</ts:Status>
[Serializable,XmlType("Status")]
public class MessageData
{
    [XmlElement("Server")]
    public string Server { get; set; }

    [XmlElement("Object")]
    public string Object { get; set; }

    [XmlElement("Port")]
    public string Port { get; set; }

    [XmlElement("Code")]
    public string Code { get; set; }

    [XmlElement("Key")]
    public string Key { get; set; }
}
我使用的代码如下:

MessageData data = new MessageData();
XmlSerializer xmlSerializer = new XmlSerializer(data.GetType());
data = (MessageData)xmlSerializer.Deserialize(new StringReader(msgData));
这里,msgData是包含上述xml的字符串。 MessageData类如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<ts:Status xmlns:ts="DistributionServices">
<Server>DUMMY</Server>
<Object>DUMMY</Object>
<Port>123</Port>
<Code>DUMMY</Code>
<Key>b0ed5e56</Key>
</ts:Status>
[Serializable,XmlType("Status")]
public class MessageData
{
    [XmlElement("Server")]
    public string Server { get; set; }

    [XmlElement("Object")]
    public string Object { get; set; }

    [XmlElement("Port")]
    public string Port { get; set; }

    [XmlElement("Code")]
    public string Code { get; set; }

    [XmlElement("Key")]
    public string Key { get; set; }
}

请告诉我我做错了什么。

您必须在类中声明名称空间,并在属性中将其设置为空。将您的类模型更改为此,它应该可以正常工作

[Serializable, XmlRoot("Status", Namespace = "DistributionServices")]
public class MessageData
{
    [XmlElement(Namespace = "")]
    public string Server { get; set; }

    [XmlElement(Namespace = "")]
    public string Object { get; set; }

    [XmlElement(Namespace = "")]
    public string Port { get; set; }

    [XmlElement(Namespace = "")]
    public string Code { get; set; }

    [XmlElement(Namespace = "")]
    public string Key { get; set; }
}
顺便说一句:如果
xmlement
与属性具有相同的名称,则不必为其显式命名