反序列化成列表里面的反序列化class?
Deserialize into a list inside the deserialized class?
小样本:
<head>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
etc.
</head>
这应该导致:
public class Head
{
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();
}
class
的序列化
public class Head
{
public coordinate[] coordinates;
}
是
<Head>
<coordinates>
<coordinate />
<coordinate />
...
</coordinates>
</Head>
但是,如果您想将示例 1 反序列化为 class,您可以使用此 class 模板:
[XmlRoot(ElementName = "head")]
public class Head
{
[XmlElement]
public coordinate coordinates { get; set; }
}
public class coordinate { }
您可以通过以下方式反序列化给定的 xml,具有 coordinate
xml 元素的扁平序列。
你的样本XML:
<head>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
etc.
</head>
型号Class:
[XmlElement(ElementName = "head")]
public class Head
{
[XmlElement(ElementName = "coordinate")]
public coordinate[] coordinates;
}
使用上述模型 class 反序列化为 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();
}
我所做的是用 [XmlElement]
属性装饰 coordinates
属性。所以你只需要像上面那样修改你的模型 class 以正确映射给定的 xml 样本。您可以在下面的 msdn 参考 link 中找到更多示例。
小样本:
<head>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
etc.
</head>
这应该导致:
public class Head
{
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();
}
class
的序列化public class Head
{
public coordinate[] coordinates;
}
是
<Head>
<coordinates>
<coordinate />
<coordinate />
...
</coordinates>
</Head>
但是,如果您想将示例 1 反序列化为 class,您可以使用此 class 模板:
[XmlRoot(ElementName = "head")]
public class Head
{
[XmlElement]
public coordinate coordinates { get; set; }
}
public class coordinate { }
您可以通过以下方式反序列化给定的 xml,具有 coordinate
xml 元素的扁平序列。
你的样本XML:
<head>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
<coordinate>
...
</coordinate>
etc.
</head>
型号Class:
[XmlElement(ElementName = "head")]
public class Head
{
[XmlElement(ElementName = "coordinate")]
public coordinate[] coordinates;
}
使用上述模型 class 反序列化为 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();
}
我所做的是用 [XmlElement]
属性装饰 coordinates
属性。所以你只需要像上面那样修改你的模型 class 以正确映射给定的 xml 样本。您可以在下面的 msdn 参考 link 中找到更多示例。