まず、System.XML は、XML を操作する優れた方法をいくつか提供します。
XML を XMLDocument にロードしたと仮定しています。そうすることで、XPath セレクターを使用したり、DOM をウォークスルーしたりできます。
このようなものは、再帰を使用して、任意の要素から一番上まで戻ります。
public XmlNode WalkToTopNode (XmlNode CurrentNode)
{
if (CurrentNode.ParentNode == null)
return CurrentNode;
else
return WalkToTopNode(CurrentNode.ParentNode);
}
再帰を使用して ID でノードを検索すると、次のようになります (注: テキスト ボックスにこれを入力したため、間違っている可能性があります)。
public XmlNode GetElementById (string id, XmlNode node)
{
if (node.Attributes["id"] != null && node.Attributes["id"].InnerText == id)
{
return node;
}
else
{
foreach (XmlNode childNode in node.Children)
{
return GetElementById(id, childNode);
}
}
return null;
}
ただし、System.XML に組み込まれているより優れたノード トラバーサルの方法が非常に多くあるときに再帰を使用している場合は、おそらく戦略を再考するときです。