无法使用DataContractSerializer获取元素列表
本文关键字:获取 元素 列表 DataContractSerializer | 更新日期: 2023-09-27 17:53:41
我无法从XML中检索"test"元素的集合。我不知道我的语法有什么问题。
下面是XML:
<tests>
<username>Me</username>
<password>meme</password>
<test>
<title>Test This</title>
<description>To verify this</description>
</test>
<test>
<title>Test That</title>
<description>To verify that</description>
</test>
</tests>
这里是c#类:
namespace MyProject
{
public class Temp
{
[DataContract(Name = "tests", Namespace = "")]
public class Tests
{
[DataMember(Name = "username", Order = 0)]
public string Username { get; set; }
[DataMember(Name = "password", Order = 1)]
public string Password { get; set; }
[DataMember(Name = "test", Order = 2)]
public List<Test> testList;
public Tests()
{
}
}
[DataContractCollection(Name = "test", Namespace = "")]
public class Test : List<Test>
{
[DataMember(Name = "title", Order = 0)]
public string Title { get; set; }
[DataMember(Name = "description", Order = 1)]
public string Description{ get; set; }
public Test()
{ }
public Test(String title, String desc)
{
this.Title = title;
this.Description= desc;
}
}
}
}
和我要序列化的代码:
FileStream fs = new FileStream("C:/bla/file.xml", FileMode.Open);
XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
DataContractSerializer serializer = new DataContractSerializer(typeof(Temp3.TestGroup), knownTypeList);
Tests tests = (Tests)serializer.ReadObject(reader, true);
reader.Close();
fs.Close();
在调试模式下,测试。testList没有任何内容。如果我把public List<Test> testList;
变成public Test testList;
,我将得到第一个测试元素。我试过使用Test[]或ArrayList。
有人能指出哪里不对吗?非常感谢。
作为一个附带问题,是否有XML的DataContractSerialization的详细示例(具有深度嵌套元素)?我找到的大多数东西都很基本。
我想我明白了——至少部分明白了。多亏了这个:http://borismod.blogspot.com/2009/06/v2-wcf-collectiondatacontract-and.html
我发现的另一件事是我必须从[DataMember(Name = "test", Order = 2)]testList
对于来自博客的示例,我的测试元素将由testlist包含。所以testlist是一个额外的元素