我正在尝试反序列化从服务获取的 XML。 但是 XmlSerializer 在遇到第一个属性时失败。
我的缩短的 xml 如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:basicInformation xmlns:ns2="http://fu.bar.com/">
<somenode>...</somenode>
...
</ns2:basicInformation>
我的班级是这样的
[XmlRoot(ElementName = "basicInformation")]
public class BasicInformation
{
[XmlElement(ElementName = "somenode")]
public string SomeNode { get; set; }
...
[XmlAttribute(AttributeName = "ns2")]
public string Ns2 { get; set; }
[XmlText]
public string Text { get; set; }
}
我得到的错误是这样的:
"There is an error in XML document (1, 57)."}
Data: {System.Collections.ListDictionaryInternal}
HResult: -2146233079
HelpLink: null
InnerException: {"<basicInformation xmlns='http://message.async.dms.svap.deere.com/'> was not expected."}
Message: "There is an error in XML document (1, 57)."
Source: "System.Xml"
StackTrace: " at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)\r\n at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)\r\n at AzureQueue.Program.Blurg() in E:\\_Code_\\Testing\\AzureQueue\\AzureQueue\\Program.cs:line 432\r\n at AzureQueue.Program.<DoSomething>d__1.MoveNext() in E:\\_Code_\\Testing\\AzureQueue\\AzureQueue\\Program.cs:line 71"
TargetSite: {System.Object Deserialize(System.Xml.XmlReader, System.String, System.Xml.Serialization.XmlDeserializationEvents)}
如果我将 xaml 中的第二行替换为:
<ns2:basicInformation xmlns:ns2="http://fu.bar.com/">
对此:
<basicInformation>
一切都很好。
所以这是具有该属性的东西,我没有正确处理,但我一直无法找到解决方案。
我应该提到,C# 类是从 xml 到 c# 工具生成的,因为完整的 xml 很大。
那么我错过了什么?我可以用非常丑陋的方式解决这个问题并进行字符串替换,但这感觉非常错误! ;)
[XmlRoot(ElementName = "basicInformation", Namespace = "http://fu.bar.com/")]
public class BasicInformation
您的数据符合命名空间要求,这一点很重要。