我無法從我的XML中檢索「test」元素的集合。 我無法弄清楚我的語法有什麼問題。無法使用DataContractSerializer獲取元素列表
這裏是下面的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。
有人能指出什麼是錯的嗎?非常感謝。
作爲一個側面的問題,是否有詳細的DataContractSerialization(有深嵌套元素)的示例?我發現的大多數都是非常基本的。
不知道你在找什麼。我使用Test類來表示< test >中的任何內容。我的tests.testList是一個測試列表(測試集合)。 – NicL
爲什麼你對屬性和其他類都有相同的屬性「測試」? –
我正在通過示例中看到的內容 http://stackoverflow.com/questions/7348240/xml-serialization-using-datacontractserializer-and-xmlserializer。在那裏它是「myArray」,我遇到了同樣的事情,試圖讓代碼在那裏工作 – NicL