XmlSerializer遇到xml属性时崩溃

问题描述 投票:0回答:1

我正在尝试反序列化从服务获取的 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 很大。

那么我错过了什么?我可以用非常丑陋的方式解决这个问题并进行字符串替换,但这感觉非常错误! ;)

c# xml xml-serialization
1个回答
0
投票
[XmlRoot(ElementName = "basicInformation", Namespace = "http://fu.bar.com/")]
public class BasicInformation

您的数据符合命名空间要求,这一点很重要。

© www.soinside.com 2019 - 2024. All rights reserved.