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