小样本:
<head>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
etc.
</head>
这应该导致:
public class Head
{
public coordinate[] coordinates;
}
第一个代码示例的反序列化是否会在将对象转换为类型&#34; Head&#34;之后导致第二个代码示例。 ?
public static void Main(string[] args)
{
XmlSerializer deserializer = new XmlSerializer(typeof(Head));
TextReader reader = new StreamReader("file.xml");
Head obj = (Head)deserializer.Deserialize(reader);
reader.Close();
}
答案 0 :(得分:0)
班级的序列化
public class Head
{
public coordinate[] coordinates;
}
是
<Head>
<coordinates>
<coordinate />
<coordinate />
...
</coordinates>
</Head>
但是,如果要将示例1反序列化为类,可以使用此类模板:
[XmlRoot(ElementName = "head")]
public class Head
{
[XmlElement]
public coordinate coordinates { get; set; }
}
public class coordinate { }
答案 1 :(得分:0)
您可以通过以下方式反序列化您的给定xml,具有coordinate
xml元素的平坦序列。
您的示例XML:
<head>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
etc.
</head>
模特课程:
[XmlElement(ElementName = "head")]
public class Head
{
[XmlElement(ElementName = "coordinate")]
public coordinate[] coordinates;
}
使用上面的模型类反序列化为Head
应该使用下面的代码..
public static void Main(string[] args)
{
XmlSerializer deserializer = new XmlSerializer(typeof(Head));
TextReader reader = new StreamReader("file.xml");
Head obj = (Head)deserializer.Deserialize(reader);
reader.Close();
}
我所做的是用coordinates
属性装饰[XmlElement]
属性。因此,您只需要修改上面的Model类,即可正确映射给定的xml示例。您可以在msdn。