Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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# C语言中XML列表对象的反序列化#_C#_Xml_Serialization - Fatal编程技术网

C# C语言中XML列表对象的反序列化#

C# C语言中XML列表对象的反序列化#,c#,xml,serialization,C#,Xml,Serialization,我正在尝试反序列化c#中的xml,它看起来像这样(缩写版本): 出于某种原因,我一直试图弄明白,我的part类中始终没有对象(和空名称)。现在我被卡住了,任何有任何意见的人?对于列表成员,您必须将他们标记为,例如: [XmlArray(ElementName = "parts")] [XmlArrayItem(ElementName = "part")] public List<Part> parts { get; set; } 为所有列表成员进行更改,那么应该可以正常工作。尝试将

我正在尝试反序列化c#中的xml,它看起来像这样(缩写版本):

出于某种原因,我一直试图弄明白,我的part类中始终没有对象(和空名称)。现在我被卡住了,任何有任何意见的人?

对于
列表
成员,您必须将他们标记为,例如:

[XmlArray(ElementName = "parts")]
[XmlArrayItem(ElementName = "part")]
public List<Part> parts { get; set; }

为所有
列表
成员进行更改,那么应该可以正常工作。

尝试将类标记为
[Serializable]
@Killercam似乎不起作用。复制xml并转到VS中的“编辑”菜单,然后单击“过去的特殊类”和“过去的xml作为类”,我认为是您的类声明导致了错误prob@DhavalPatel谢谢这确实奏效了。仍然不明白为什么我的代码没有,但是谢谢!
[XmlRoot("map")] 
public class Map {


    [XmlElement(ElementName = "parts")]
    public List<Part> parts { get; set; }

    public Map()
    {
         parts = new List<Part>();
    }


public class Part {

    [XmlElement(ElementName = "objects")]
    public List<KdToPostGISProject.Object> objects { get; set; }

    public Part()
    {
        objects = new List<KdToPostGISProject.Object>();
    }

    [XmlAttribute(AttributeName = "name")]
    public String name { get; set; }     

}

public class Object
    {
         [XmlElement(ElementName = "coords")]
         public List<Coord> coords { get; set; } 

          public Object()
          {
             coords = new List<Coord>();
          }
    }


public class Coord
{
    [XmlAttribute]
    public int x { get; set; }
    [XmlAttribute]
    public int y { get; set; }
}
var serializer = new XmlSerializer(typeof(Map), new XmlRootAttribute("map"));               

Map resultingMessage = (Map)serializer.Deserialize(new FileStream(@"myXml.xml", FileMode.Open));
[XmlArray(ElementName = "parts")]
[XmlArrayItem(ElementName = "part")]
public List<Part> parts { get; set; }
[XmlElement(ElementName = "parts")]