2013-01-16 18 views
0

我無法從我的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(有深嵌套元素)的示例?我發現的大多數都是非常基本的。

+0

不知道你在找什麼。我使用Test類來表示< test >中的任何內容。我的tests.testList是一個測試列表(測試集合)。 – NicL

+0

爲什麼你對屬性和其他類都有相同的屬性「測試」? –

+0

我正在通過示例中看到的內容 http://stackoverflow.com/questions/7348240/xml-serialization-using-datacontractserializer-and-xmlserializer。在那裏它是「myArray」,我遇到了同樣的事情,試圖讓代碼在那裏工作 – NicL

回答