Поиск узлов по имени в 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)
?