XMLから「テスト」要素のコレクションを取得できません。構文の何が問題なのか理解できません。
以下の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();
デバッグモードでは、tests.testListには何もありません。に変更 public List<Test> testList;
する public Test testList;
と、最初のテスト要素が取得されます。Test[]またはArrayListも使用してみました。
何が悪いのか指摘できますか?どうもありがとう。
副次的な質問として、XMLのDataContractSerialization(深くネストされた要素を含む)の詳細なサンプルはありますか?私が見つけたもののほとんどはかなり基本的なものでした。