有个xml文件,结构是这样的
<Document>
   <Child name="linda">
   <Child name="def">
   <Child name="123">
   <Child name="andy">
   <Child name="abc">
</Document>
我的代码是:
XmlDocument xDoc = new XmlDocument();
XmlNodeList xnl = xDoc.SelecteNodes(@"./Document/Child");但是我要取的是所有子节点的前3 个节点(对name没有要求),本来遍历这个xmlnodelist,之后寻道arraylist是可以的,但是有序系统已经用了很久了,要改的话,确实量比较大。大侠们有没有好的方法,直接取 前n 个子节点放到XmlNodeList的?

解决方案 »

  1.   

    换个思路,先把child整理一下,只保留前三个就可以了,
    Root = ...
    for (i = Root.Notes.Count - 1; i >= 3; i--)
    {
    Root.Notes.Remove(i);
    }
      

  2.   

    XmlDocument doc = new XmlDocument();
    doc.Load(filePath);
    XmlNodeList list = doc.SelectNodes("Document/Child[1] | Document/Child[2] | Document/Child[3]");
      

  3.   

    你既然都可以写SelectNodes
    为什么不定义一个XmlNodeList
    然后把XmlNodeList xnl = xDoc.SelecteNodes(@"Document/Child");
    这个list转换一下??XmlNodeList xnl = xDoc.SelecteNodes(@"Document/Child");
    XmlNodeList list = null;
    for(int i = 0 ;i < 3;i++)
    {
        list.Add(xnl[i]);
    }
    不是一样的么??
      

  4.   

    string path = @"aa.xml";
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(path);
                XmlNodeList list = xmldoc.SelectNodes("Document/Child[position()<=3]");
                Console.WriteLine(list.Count);
      

  5.   

    to: 螳螂, XmlNodeList是不能是实例话的,不能new,也就不能用add方法。 不过还是谢谢你谢谢Scow,按你的方法解决了,补充一点,如果选择child时有条件,就在后面再加一个[]