我有以下xml文件:
<ArrayOfX xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<X>
<Name>Name1</Name>
<ArrayOfY>
<Y>
<Member1>1</Member1>
</Y>
...
</ArrayOfY>
</X>
...
</ArrayOfX>
public class X {
public string Name { get; set; }
public List<Y> Y { get; set; }
}
public class Y {
public String Member1 { get; set; }
}
但是如果我尝试使用XmlSerializer反序列化,Name包含正确的值,但Y列表为空。有什么想法吗?
XmlSerializer serializer = new XmlSerializer( typeof( List<X> ) );
return (List<X>)serializer.Deserialize(reader);
答案 0 :(得分:1)
您需要填充&#39; extraTypes&#39; typeof(Y)的数组参数。
答案 1 :(得分:1)
试试这个:
public class X {
public string Name { get; set; }
[XmlArray(ElementName = "ArrayOfY")]
public List<Y> Y { get; set; }
}
使用类定义,如果您尝试序列化List<X>
,输出将如下所示:
<ArrayOfX xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<X>
<Name>Name1</Name>
<Y> <!-- Not ArrayOfY -->
<Y>
<Member1>1</Member1>
</Y>
...
</Y>
</X>
...
</ArrayOfX>
您提供的xml文件不是XmlSerializer(typeof(List<X>))
的有效格式。对于X的<Y>
成员,期望<ArrayOfY>
而不是List<Y>
。
我添加的属性会指示序列化程序查找名为ArrayOfY的元素。