怎样获取xml文件中总共有多少个不同的节点数
如:<?xml version="1.0" encoding="utf-8"?>
<School sname="aa">
  <Class cname="c1">
    <Student name="bb" age="21">
    </Student>
    <Stu name="stu1" />
  </Class>
  <Class cname="c2">
    <Student name="cc" age="22">
    </Student>
  </Class>
</School>这个xml文件,有三个不同节点

解决方案 »

  1.   


    public List<string> count_list = new List<string>();
                public void GetNodeName(XmlNode xn)
                {
                    string name = xn.Name;
                    if (!count_list.Contains(name))
                        count_list.Add(name);
                    if (xn.HasChildNodes)
                    {
                        foreach (XmlNode temp in xn.ChildNodes)
                        {
                            GetNodeName(temp);
                        }
                    }
                }调用
    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(@"C:\Documents and Settings\Administrator\桌面\Test.txt");
                    GetNodeName(xDoc.LastChild);
    //此时,count_list记录如下,不止三个吧
     /*
                     *  [0] "School" string
                    [1] "Class" string
                    [2] "Student" string
                    [3] "Stu" string                 */
      

  2.   

    呵呵,是的,那个stu 没看到
      

  3.   

    这个方法有个缺陷,如果<?xml version="1.0" encoding="utf-8"?>
    <School sname="aa">
      <Class cname="c1">
        <Student name="bb" age="21">
          <Student tname="v"/>
        </Student>
      </Class>
      <Class cname="c2">
        <Student name="cc" age="22">
          <Student tname="f"/>
        </Student>
      </Class>
    </School>如果是这样的结构,文件中的节点父节点跟子节点有相同的,就会少找到一个节点名,这个该怎样解决?
      

  4.   

    不就是三个节点么,缺陷在哪? [0] "School" string
    [1] "Class" string
    [2] "Student" string
      

  5.   

    仔细看xml文件,我的意思是父节点名和子节点相同的话,按你的方法在存入集合时就只能存入一个,遇到这样的xml文件该怎么解决