Questions というカスタム プロパティがあります。コードは以下のとおりです。
public class Questions
{
private List<Question> _q = new List<Question>();
public List<Question> Question
{
get { return _q; }
}
}
public class Question
{
public string Text { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public string Answer { get; set; }
private List<string> _Options = new List<string>();
public List<string> Option {
get { return _Options; }
}
}
次に、プロパティに以下のコードを入力します
XmlDocument doc = new XmlDocument();
Question q = new Question();
Questions qs = new Questions();
doc.Load(string.Format(@"questions.xml"));
XmlNodeList list = doc.SelectNodes("/questions/question");
foreach (XmlNode node in list)
{
q.Text = node.SelectSingleNode("text").InnerText;
q.Type = node.SelectSingleNode("type").InnerText;
q.Name = node.SelectSingleNode("name").InnerText;
XmlNodeList options = doc.SelectNodes("/questions/question/options");
foreach (XmlNode option in options)
{
q.Option.Add(option.SelectSingleNode("option").InnerText);
}
load.Visible = false;
qa.Visible = true;
qs.Question.Add(q);
DisplayQuestion(qs);
}
以下のコードでアクセスしようとすると、期待する出力が得られません。したがって、これは私が助けを必要とするところです。サンプル XML は一番下にあります
Label1.Text = q.Question[CurrentQ].Text;
for (int i = 0; i < q.Question[CurrentQ].Option.Count; i++)
{
CheckBoxList1.Items.Add(q.Question[CurrentQ].Option[i]);
}
XML:
<?xml version="1.0"?>
<questions>
<question>
<num>1</num>
<type>radio</type>
<text>Do you like cake?</text>
<options>
<option>Yes</option>
<option>No</option>
<option>Sometimes</option>
</options>
<name>cake</name>
</question>
<question>
<num>2</num>
<type>dropdown</type>
<text>Do you like TV?</text>
<options>
<option>Yes</option>
<option>No</option>
<option>Sometimes</option>
</options>
<name>tv</name>
</question>
<question>
<num>3</num>
<type>checkbox</type>
<text>What do you like?</text>
<options>
<option>Cake</option>
<option>TV</option>
<option>Flipper Reruns</option>
</options>
<name>flipper</name>
</question>
</questions>
そして出力:
あなたは何が好きですか?
はい
はい
ケーキ
はい
はい
ケーキ
はい
はい
ケーキ