怎样根据xpath取得XML文档中某借点的指定个数的子节点

andywang110001 2006-10-30 04:48:56
有个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的?
...全文
301 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
andywang110001 2006-10-30
  • 打赏
  • 举报
回复
to: 螳螂, XmlNodeList是不能是实例话的,不能new,也就不能用add方法。 不过还是谢谢你

谢谢Scow,按你的方法解决了,补充一点,如果选择child时有条件,就在后面再加一个[]
scow 2006-10-30
  • 打赏
  • 举报
回复
string path = @"aa.xml";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(path);
XmlNodeList list = xmldoc.SelectNodes("Document/Child[position()<=3]");
Console.WriteLine(list.Count);
lovefootball 2006-10-30
  • 打赏
  • 举报
回复
你既然都可以写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]);
}
不是一样的么??
lovefootball 2006-10-30
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNodeList list = doc.SelectNodes("Document/Child[1] | Document/Child[2] | Document/Child[3]");
andywang110001 2006-10-30
  • 打赏
  • 举报
回复
呵呵,我没说清楚,原文件是不能动的,只能读。。。
jimh 2006-10-30
  • 打赏
  • 举报
回复
换个思路,先把child整理一下,只保留前三个就可以了,
Root = ...
for (i = Root.Notes.Count - 1; i >= 3; i--)
{
Root.Notes.Remove(i);
}
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-30 04:48
社区公告

让您成为最强悍的C#开发者