我是 .net 和 xamarin 的新手。我正在尝试开发一个 xamarin 表单应用程序。当我尝试反序列化我的 xml 时,出现了错误。
在System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x0013d]中导入类型映射,在System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Type type, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00048]中导入类型映射,在System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Xml.Serialization.XmlAttributeOverrides overrides, System.Type[] extraTypes, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00041]中构造XmlSerializer,在System.Xml.Serialization.XmlSerializer..ctor (System.Type type) [0x00000]中构造XmlSerializer,在C:\Users\TEKINHP\source\repos\FimaksApp\Fmkt44\Fmkt44\icerik.xaml.cs:83中反序列化。
我的 XML 文件是
这是我的反序列化方法。
发生错误,位于serializer.Deserialize处。
Error Message is
在System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Xml.Serialization.TypeData typeData, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x0013d]中导入类型映射,在System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (System.Type type, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00048]中导入类型映射,在System.Xml.Serialization.XmlSerializer..ctor (System.Type type, System.Xml.Serialization.XmlAttributeOverrides overrides, System.Type[] extraTypes, System.Xml.Serialization.XmlRootAttribute root, System.String defaultNamespace) [0x00041]中构造XmlSerializer,在System.Xml.Serialization.XmlSerializer..ctor (System.Type type) [0x00000]中构造XmlSerializer,在C:\Users\TEKINHP\source\repos\FimaksApp\Fmkt44\Fmkt44\icerik.xaml.cs:83中反序列化。
[XmlRoot("REPORTLIST")]
[Serializable]
class REPORTLIST
{
public REPORTLIST()
{
}
public List<ROW> ROW { get; set; }
}
[Serializable]
class ROW
{
public ROW()
{
}
public string INSTNUMBER { get; set; }
public string MATERIAL { get; set; }
}
我的 XML 文件是
<REPORTLIST>
<ROW>
<MATERIAL>A</MATERIAL>
<INSTNUMBER>B</INSTNUMBER>
</ROW>
</REPORTLIST>
这是我的反序列化方法。
public static Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
REPORTLIST Deserialize1(String MyXml)
{
XmlSerializer serializer = new XmlSerializer(typeof(REPORTLIST));
return (REPORTLIST)serializer.Deserialize(GenerateStreamFromString(MyXml));
}
发生错误,位于serializer.Deserialize处。
new StringReader(MyXml)
而不是GenerateStreamFromString
。 - Marc Gravell