gpt4 book ai didi

c# - 使用 XMLSerializer 反序列化 XML

转载 作者:行者123 更新时间:2023-11-30 23:13:27 25 4
gpt4 key购买 nike

我正在尝试使用 XmlSerializer 反序列化 XML 文件。但是我收到此异常:XML 文档 (1, 41) 中存在错误。InnerException 消息“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>

我用过的代码如下:

MessageData data = new MessageData();
XmlSerializer xmlSerializer = new XmlSerializer(data.GetType());
data = (MessageData)xmlSerializer.Deserialize(new StringReader(msgData));

这里,msgData 是包含上面显示的 xml 的字符串。MessageData 类如下所示:

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

顺便说一句:如果 XmlElement 与属性同名,则您不必明确命名它们。

关于c# - 使用 XMLSerializer 反序列化 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43603524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com