Я пытаюсь найти узел по имени в 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");
По некоторым причинам это всегда возвращает пустой указатель, и я не действительно уверен почему. Кто-то может выручить меня с этим?
Измените эту строку:
if (node.HasChildNodes) FindNode(node.ChildNodes, nodeName);
на:
if (node.HasChildNodes)
{
XmlNode nodeFound = FindNode(node.ChildNodes, nodeName);
if (nodeFound != null)
return nodeFound;
}
EDITED: теперь код более правильный ( проверено);)
Почему вы не можете использовать
Node.SelectSingleNode(".//" + nodeName)
?