Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 在unity中反序列化XML数组_C#_Unity3d - Fatal编程技术网

C# 在unity中反序列化XML数组

C# 在unity中反序列化XML数组,c#,unity3d,C#,Unity3d,我正在尝试从XML文档反序列化对象数组。 该文档构建在以下结构中: <?xml version="1.0" encoding="UTF-8"?> <root> <element> ..... </element> <element> ..... </element> </root> 我不确定它是否做得正确。因为我知道,在jso

我正在尝试从XML文档反序列化对象数组。 该文档构建在以下结构中:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <element>
      .....
   </element>
  <element>
      .....
   </element>
</root>
我不确定它是否做得正确。因为我知道,在json中,您无法反序列化数组,必须进行某种“黑客”操作


在CardModel类(数组的元素)中,我在类上方使用标记[XmlRoot(“root”)]。我也尝试过使用[XmlRoot(“element”)],但我还是被卡住了。

Afaik您不能直接反序列化到数组中,但需要一个像这样的包装类

[Serializable]
[XMLRoot("root")]
public class Root
{
    // This does the magic of treating all "element" items nested under the root
    // As part of this array
    [XmlArray("element")]
    public CardModel[] models;
}
而不是像这样去具体化

public static CardModel[] Load(string text)
{  
    // I don't think that you need the attribute overwrite here
   
    var serializer = new XmlSerializer(typeof(Root));
    using(var reader = new StringReader(text))
    {
        var root = (Root) serializer.Deserialize(reader);
        return root.models;
    }
}
我认为这个链接是一个解决方案,你正在寻找。
public static CardModel[] Load(string text)
{  
    // I don't think that you need the attribute overwrite here
   
    var serializer = new XmlSerializer(typeof(Root));
    using(var reader = new StringReader(text))
    {
        var root = (Root) serializer.Deserialize(reader);
        return root.models;
    }
}