我想从XML文件中创建一个括号树。从C#中的XML文件创建一个括号树
在托架的匹配由四个小组。该团队的获胜者前进到下一轮。
如果比赛包括3支球队和一个孩子的比赛,那么孩子匹配决定第四小组父比赛。
这里是我的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'会给你一棵树。 –