web-dev-qa-db-ja.com

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");

何らかの理由で常にnullを返しますが、その理由はよくわかりません。誰かがこれで私を助けることができますか?

14
RajenK

この行を変更します:

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

に:

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

編集済み:コードがより正確になりました(テスト済み);)

7
digEmAll