Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在XmlDocument中按名称搜索节点_C#_Xmldocument - Fatal编程技术网

C# 在XmlDocument中按名称搜索节点

C# 在XmlDocument中按名称搜索节点,c#,xmldocument,C#,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 (

我正在尝试使用以下代码在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,我不知道为什么。有人能帮我解决这个问题吗?

更改这行:

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

已编辑:代码现在更正确(已测试);)

为什么你不能使用

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

?

谢谢,伙计。有点愚蠢,我错过了这么简单的东西。有时候,你检查代码越多,修复成功的机会就越少…:完成附加问题:如果我有一个具有多个路径的XML结构,即:它似乎只导航第一棵树(到c),但使用上述方法找不到e。这是我的代码的预期行为吗?对不起,我没有很好地阅读您的评论。我已经编辑了这篇文章,现在它更正确了(我也用您的示例测试了它),无论如何,我仍然建议您检查XPath导航是否适合您的需要,或者可能LINQ到XmlDocument而不仅仅是XmlDocument.GetElementsByTagName(nodeName)?如果您的xml中已经定义了任何名称空间,您可能会遇到异常:需要名称空间管理器或XsltContext。此查询具有前缀、变量或用户定义的函数。
Node.SelectSingleNode(".//" + nodeName)