/我在尝试反序列化xml文件时出错:
System.InvalidOperationException: There is an error in XML document (2, 2). ---> <MessageIpBNotifGetInventaire xmlns='http://www.idele.fr/XML/Schema/'> was not expected.
我的XML部分是一个问题,如下所示:
<ns2:MessageIpBNotifGetInventaire xmlns="http://www.fiea.org/types/" xmlns:ns2="http://www.idele.fr/XML/Schema/">
我的课程定义如下:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.17929")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.idele.fr/XML/Schema/")]
[System.Xml.Serialization.XmlRootAttribute("MessageIpBNotifGetInventaire", Namespace = "http://www.idele.fr/XML/Schema/", IsNullable = false)]
public partial class MessageIpBNotifGetInventaire {
这是我的反序列化代码
using (MemoryStream inputStream = new MemoryStream(reponseSpecifique.MessageZip))
{
using (ZipFile zipFile = ZipFile.Read(inputStream))
{
zipFile.Save("D:\\Test.zip");
foreach (ZipEntry zipEntry in zipFile)
{
using (MemoryStream outputStream = new MemoryStream())
{
zipEntry.Extract(outputStream);
outputStream.Position = 0;
using (StreamReader sr = new StreamReader(outputStream, Encoding.GetEncoding("UTF-8")))
{
XmlReader reader = XmlReader.Create(outputStream);
XmlSerializer serializer = new XmlSerializer(typeof(MessageIpBNotifGetInventaire));
MessageIpBNotifGetInventaire messageRetour = (MessageIpBNotifGetInventaire)serializer.Deserialize(reader);
}
}
}
}
}
答案 0 :(得分:0)
问题在于XmlRootAttribute
定义中的命名空间与XML文档本身中的命名空间不匹配。一个人最后有一个/
,另一个没有。
您可能会认为,这些网址指向同一个网址,但实际上使用网址作为命名空间只是一种约定(我不会自己跟随,我更喜欢使用urn:companyname:schemas:appname
或沿着那些线的东西),字符串必须完全匹配。