在使用SelectNodes查询Xml节点的时候,第一次从根出发没问题,可是从查询出来的节点再次使用SelectNodes就不好使了,如下面的代码,cs的Count最后是0,取不到东西,不知道是什么问题,请指教!XML文件如下:<?xml version="1.0" encoding="utf-8" ?>
<root>
  <subRoot>
    <c>1</c>
    <c>2</c>
    <c>3</c>
    <c>4</c>
    <c>5</c>
    <c>6</c>
  </subRoot>
  <subRoot>
    <c>7</c>
  </subRoot>
  <subRoot>
    <c>8</c>
  </subRoot>
  <subRoot>
    <c>9</c>
  </subRoot>
  <subRoot>
    <c>a</c>
    <c>b</c>
  </subRoot>
  <subRoot>
    <c>c</c>
    <c>d</c>
    <c>e</c>
  </subRoot>
</root>源程序代码:XmlDocument doc = new XmlDocument();
doc.Load(Application.StartupPath + @"\XMLFile1.xml");
XmlNode root = doc.DocumentElement;
XmlNodeList subRoots = root.SelectNodes("/root/subRoot");
foreach (XmlNode n in subRoots)
{
    XmlNodeList cs = n.SelectNodes("/subRoot/c");
}

解决方案 »

  1.   

    foreach (XmlNode n in subRoots)
    这里的n已经是subrRoot了,所以你就不能再用n.SelectNodes("/subRoot/c");因为你用的是相对路径.这样写就好啦:
    XmlNodeList cs = n.SelectNodes("c");
      

  2.   

    不睡觉的鱼,我试过了,不行!
    难道你那里行?n的Name是subRoot,当然要从subRoot开始找了!
      

  3.   

    XmlNodeList cs = n.SelectNodes("/subRoot/c");
    --》
    XmlNodeList cs = n.SelectNodes("c");
    这样没问题的
    我试过了n这个节点已经是subRoot了
    所以如果用n.SelectNodes的时候
    Path应该从subRoot的子节点开始
      

  4.   

    呵呵,不好意思,我给写成 XmlNodeList cs = n.SelectNodes("/c");
    就多了一个“/”,好,揭帖!