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

Я пытаюсь найти узел по имени в 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");

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

14
задан RajenK 9 May 2010 в 09:47
поделиться

2 ответа

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

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

на:

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

EDITED: теперь код более правильный ( проверено);)

7
ответ дан 1 December 2019 в 09:31
поделиться

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

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

?

21
ответ дан 1 December 2019 в 09:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: