Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# SelectNodes(..)-找不到任何内容。。帮忙?_C#_.net_Xml_Xmlreader - Fatal编程技术网

C# SelectNodes(..)-找不到任何内容。。帮忙?

C# SelectNodes(..)-找不到任何内容。。帮忙?,c#,.net,xml,xmlreader,C#,.net,Xml,Xmlreader,很抱歉用这么简单的问题来打扰你,但我已经被困在这里一个小时了: 我有一个xml文件,看起来像这样: <?xml version="1.0" encoding="utf-8"?> <aaa xmlns="http://blabla.com/xmlschema/v1"> <bbb> <ccc>Foo</ccc> </bbb> <ddd x="y" /> <ddd x="xx" /&g

很抱歉用这么简单的问题来打扰你,但我已经被困在这里一个小时了:

我有一个xml文件,看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<aaa xmlns="http://blabla.com/xmlschema/v1">

  <bbb>
    <ccc>Foo</ccc>
  </bbb>

  <ddd x="y" />
  <ddd x="xx" />
  <ddd x="z" />

</aaa>
var doc = new XmlDocument();
doc.Load("example.xml");
foreach (XmlNode dddNode in doc.DocumentElement.SelectNodes("//ddd"))
{
   // do something
   Console.WriteLine(dddNode.Attributes["x"].Value);
}
在运行时跳过foreach循环,因为我没有从.SelectNodes方法中获取任何节点。我在循环之前中断并查看了InnerXML,看起来不错,我还尝试了各种XPath(如“//bbb”或“/aaa/ddd”),但只有“/”似乎不返回null


这个代码以前对我有用,现在不行了。我怀疑aaa标记中的名称空间声明有问题,但我不明白为什么会出现问题。或您能看到我可能缺少的任何内容吗?

这是xml名称空间。没有
ddd
。但是,有一个
x:ddd
,其中
x
http://blabla.com/xmlschema/v1
。您需要使用名称空间进行测试-例如:

var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("x", "http://blabla.com/xmlschema/v1");
var nodes = doc.DocumentElement.SelectNodes("//x:ddd", nsmgr);
// nodes has 3 nodes
x
在上面是任意的;除了方便之外,
x
没有其他意义

这(相当不方便)意味着将名称空间(或别名,如上所述)添加到所有xpath表达式中