XMLファイルから括弧のツリーを作成しようとしています。C#のXMLファイルからブラケットツリーを作成する
ブラケットでの試合は4チームで構成されています。そのチームの勝者は次のラウンドに進む。
マッチが3つのチームと1つのマッチで構成されている場合、そのマッチでは、マッチの第4チームが決定されます。ここで
は私のXMLファイルである:ここで
<?xml version="1.0" encoding="utf-8" ?>
<Round>
<Match>
<Team id="A1">Apples</Team>
<Team id="B2">Banannas</Team>
<Team id="C3">Cantalopes</Team>
<Team id="D4">Durians</Team>
</Match>
<Match>
<Team id="A2">Avocados</Team>
<Team id="B2">Blueberry</Team>
<Team id="C3">Coconut</Team>
<Team id="TBD">
<Match>
<Team id="A3">Apricots</Team>
<Team id="B5">Banannas</Team>
<Team id="C9">Cantalopes</Team>
<Team id="D6">Durians</Team>
</Match>
</Team>
</Match>
</Round>
はツリーを作成するために私の関数である。
private void CreateTree(XmlTextReader reader, Node<Match<Team>> parent, Match<Team> currentMatch)
{
if (reader.Read())
{
if (reader.IsStartElement())
{
switch (reader.Name)
{
case "Match": //We need to make a new match!
currentMatch = new Match<Team>();
Node<Match<Team>> child = new Node<Match<Team>>(currentMatch);
parent.Add(currentMatch);
CreateTree(reader, child, currentMatch);
break;
case "Team": //We need to add a team!
string id = reader.GetAttribute("id");
if (id != "TBD")
{
string name = reader.Value;
currentMatch.Add(new Team(id, name));
}
else
{
currentMatch.Add(Team.Tbd);
}
CreateTree(reader, parent, currentMatch);
break;
default:
break;
}
}
else
{
CreateTree(reader, parent.Parent, null);
}
}
}
私が最初に次のようにこの関数を呼び出す:
string path = Path.Combine(Environment.CurrentDirectory, @"Data\", fileName);
XmlTextReader reader = new XmlTextReader(path);
CreateTree(reader, tree, null);
reader.Close();
残念ながら、これは機能しません、私のツリーは空であり、私は間違って何をしているのか分かりません。これを理解する助けがあれば幸いです!
ありがとうございます!
XML自体が木です。だから 'XElement.Load'はあなたに木を与えます。 –