私はXMLを逆シリアル化する必要があります。 chapter要素には、複数の子チャプター要素を含めることができます.XmlSerializerを使用してXMLを逆シリアル化しようとしました。 すべての要素が期待どおりにデシリアライズされていますが、チャプターの配列がデシリアライズされていないという問題があります。助けてください。同じタイプの子ノードを持つC#でXMLを逆シリアル化する方法
<Survey>
<SurveyResults>
<Subject>
<Chapter>
<ChapterIterationName />
<Questions />
<Chapter>
<ChapterName>CHAPTER 1</ChapterName>
<ChapterIterationName />
<Questions>
<Question>
<Text>Question 1</Text>
</Question>
<Question>
<Text>Question 2</Text>
</Question>
</Questions>
<Chapter>
<ChapterName>CHAPTER 1.1</ChapterName>
<ChapterIterationName />
<Questions>
<Question>
<Text>Questoin 1</Text>
</Question>
<Question>
<Text>Questoin 2</Text>
</Question>
</Questions>
</Chapter>
<Chapter>
<ChapterName>CHAPTER 1.2</ChapterName>
<ChapterIterationName />
<Questions>
<Question>
<Text>Questoin 1</Text>
</Question>
<Question>
<Text>Questoin 2</Text>
</Question>
</Questions>
</Chapter>
</Chapter>
</Chapter>
</Subject>
</SurveyResults>
</Survey>
これは私が試したコードです。
public class Survey
{
public SurveyResults SurveyResults { get; set; }
}
public class SurveyResults
{
public Subject Subject { get; set; }
}
public class Subject
{
public List<Chapter> Chapter { get; set; }
}
public class Chapter
{
public string ChapterName { get; set; }
public string ChapterIterationName { get; set; }
[XmlArray("Chapter")]
public List<Chapter> Chapters { get; set; }
public List<Questions> Questions { get; set; }
}
public class Questions
{
public List<Question> Question { get; set; }
}
public class Question
{
public string Text { get; set; }
}
public class Serializer
{
public T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
return (T)ser.Deserialize(sr);
}
}
}
Serializer ser = new Serializer();
Survey survey = ser.Deserialize<Survey>(xlString);
なぜあなたの代わりに、直接 '一覧 Questions'の' Chapter'に '一覧 Questions'を持っているのですか? –