Поиск узлов по имени в XmlDocument

Я пытаюсь найти node по имени в XmlDocument со следующим кодом:

private XmlNode FindNode(XmlNodeList list, string nodeName)
{
    if (list.Count > 0)
    {
        foreach (XmlNode node in list)
        {
            if (node.Name.Equals(nodeName)) return node;
            if (node.HasChildNodes) FindNode(node.ChildNodes, nodeName);
        }
    }
    return null;
}

Я вызываю функцию с помощью:

FindNode(xmlDocument.ChildNodes, "somestring");

По какой-то причине он всегда возвращает null, и я не совсем уверен, почему. Может кто-нибудь помочь мне с этим?

Ответы

Ответ 1

Измените эту строку:

if (node.HasChildNodes) FindNode(node.ChildNodes, nodeName);

в

if (node.HasChildNodes)
{
    XmlNode nodeFound = FindNode(node.ChildNodes, nodeName);
    if (nodeFound != null)
        return nodeFound;
}

EDITED: код более корректен (проверен);)

Ответ 2

Почему вы не можете использовать

Node.SelectSingleNode(".//" + nodeName)

?