Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Xml反序列化错误_C#_Xml_Xamarin_Deserialization - Fatal编程技术网

C#Xml反序列化错误

C#Xml反序列化错误,c#,xml,xamarin,deserialization,C#,Xml,Xamarin,Deserialization,我是newby.net和xamarin。我正在尝试开发一个xamarin表单应用程序。当我试图反序列化我的xml时,我发现了一个错误 Error Message is 在System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(System.Xml.Serialization.TypeData TypeData,System.Xml.Serialization.XmlRootAttribute根,System.Stri

我是newby.net和xamarin。我正在尝试开发一个xamarin表单应用程序。当我试图反序列化我的xml时,我发现了一个错误

Error Message is  
在System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(System.Xml.Serialization.TypeData TypeData,System.Xml.Serialization.XmlRootAttribute根,System.String defaultNamespace)[0x0013d]中:0 位于:0中的System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(System.Type类型,System.Xml.Serialization.XmlRootAttribute根,System.String defaultNamespace)[0x00048] 位于System.Xml.Serialization.XmlSerializator..ctor(System.Type类型、System.Xml.Serialization.XmlAttributeOverrides、System.Type[]外部类型、System.Xml.Serialization.XmlRootAttribute根、System.String defaultNamespace)[0x00041]中:0 0中的System.Xml.Serialization.XmlSerializer..ctor(System.Type类型)[0x00000]处 在C:\Users\TEKINHP\source\repos\FimaksApp\Fmkt44\Fmkt44\icerik.xaml.cs:83中的Fmkt44.icerik.Deserialize1(System.String IasReturn)[0x00002]处

序列化程序出错。反序列化

错误消息为:

由于其保护级别,无法访问REPORTLIST。只能处理公共类型

使类型
公开
XmlSerializer
无法处理
内部类型。另外:您不需要
[Serializable]
-
XmlSerializer
不关心

您还需要对集合执行
[xmlement]
,以告诉它不要添加/期望使用包装器元素

最后工作版本:

[XmlRoot("REPORTLIST")]
public class ReportList
{
    [XmlElement("ROW")]
    public List<Row> Rows { get; } = new List<Row>();    
}
public class Row
{
    [XmlElement("INSTNUMBER")]
    public string InstNumber { get; set; }
    [XmlElement("MATERIAL")]
    public string Material { get; set; }
}
[XmlRoot(“报告列表”)]
公共类报告列表
{
[XmlElement(“行”)]
公共列表行{get;}=new List();
}
公共类行
{
[XmlElement(“INSTNUMBER”)]
公共字符串编号{get;set;}
[XmlElement(“材料”)]
公共字符串材质{get;set;}
}

btw:您应该能够使用
newstringreader(MyXml)
而不是
GenerateStreamFromString
谢谢。我想没那么简单
 <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));

    }
[XmlRoot("REPORTLIST")]
public class ReportList
{
    [XmlElement("ROW")]
    public List<Row> Rows { get; } = new List<Row>();    
}
public class Row
{
    [XmlElement("INSTNUMBER")]
    public string InstNumber { get; set; }
    [XmlElement("MATERIAL")]
    public string Material { get; set; }
}