少し問題があります。XML ファイルを解析して、その内容を TreeView に入れようとしています。私はすべてをうまく機能させましたが、1つのことに問題があります。
XML ファイルの例を次に示します。
<AnswerIt>
<category name="Category 1">
<question is="Question 1">
<answer couldbe="Answer 1" />
<answer couldbe="Answer 2" />
</question>
</category>
<category name="Category 2">
<question is="Question 1">
<answer couldbe="Answer 1" />
</question>
<question is="Question 2">
<answer couldbe="Answer 1" />
</question>
</category>
</AnswerIt>
XML ファイルを作成するために使用しているコードは、すべてのカテゴリを正常に取得します。質問の部分に到達すると、最初の質問が引っ張られますが、その後は引っ張られません。すべての回答は問題なく取得されます (最初の質問に属している限り)。ここに私のC#コードがあります:
public void LoadQuestionDatabase()
{
XmlTextReader reader = new XmlTextReader("http://localhost/AnswerIt.xml");
TreeNode node = new TreeNode();
TreeNode subnode = new TreeNode();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "category")
{
node = lstQuestions.Nodes.Add(reader.GetAttribute(0));
categories.Add(reader.GetAttribute(0));
while (reader.NodeType != XmlNodeType.EndElement)
{
reader.Read();
if (reader.Name == "question")
{
subnode = node.Nodes.Add(reader.GetAttribute(0));
questions.Add(reader.GetAttribute(0));
while (reader.NodeType != XmlNodeType.EndElement)
{
reader.Read();
if (reader.Name == "answer")
{
// add each answer
subnode.Nodes.Add(reader.GetAttribute(0).Replace("\t", ""));
}
}
}
}
}
}
reader.Close();
}
私はC#があまり得意ではありません。すべての質問をループして追加していない行のどこかを推測しています。私が間違っていることはありますか?私を助けるために読むことができる場所はどこですか?私が読んだすべての例では、ツリービューにルート ノード (AnswerIt) が配置されていますが、それは望ましくありません。