紧急求助!

shui8iuhs 2009-04-15 01:40:18
我查询xml文件时是用遍历所有节点的方式来查询需要的数据,但是当数据量非常大时,查询数据的时候就非常的慢,想请教大家一下,有没有什么快速的查询方法之类的,在此先谢谢啊。

代码如下:
int[] onoff ={ 16, 63, 68, 76, 118, 123, 161 };
xmldoc = new XmlDocument();
xmldoc.Load(System.Windows.Forms.Application.StartupPath + "\\RemoteInfo.xml");
XmlNodeList list = xmldoc.SelectSingleNode("RemoteInfo").ChildNodes;
foreach (XmlNode node in list)
{
XmlElement xe = (XmlElement)node;

if (onoff[i] == int.Parse(xe.GetAttribute("indexid")))
{
value = xe.GetAttribute("value") ;
if (value == "0" || value == "1")
{
//执行
}
}
}
...全文
121 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonshineidolon 2009-04-16
  • 打赏
  • 举报
回复
怎么查询 都需要遍历xml节点
肯定耗时
路人乙e 2009-04-16
  • 打赏
  • 举报
回复
对XML的操作本身就慢,数据量再大的话就没得说
可以考虑使用正则直接处理文件字符串
shui8iuhs 2009-04-16
  • 打赏
  • 举报
回复
我用的是直接查询id的方法,似乎要快一些。谢谢大家。
jcyluck 2009-04-15
  • 打赏
  • 举报
回复
用XMLREADER会大幅提高读取的效率
ximi82878 2009-04-15
  • 打赏
  • 举报
回复
如果想提高效率就必须从算法上来解决了。比如用2分啊,什么的。还有,你的执行代码逻辑很强吗?能不能把所有匹配数据都找出来以后,一次性执行呢?我也是个菜鸟,个人愚见,希望能给LZ带来启发
Jueyoung 2009-04-15
  • 打赏
  • 举报
回复
if (onoff[i] == int.Parse(xe.GetAttribute("indexid")))
{
value = xe.GetAttribute("value") ;
if (value == "0" || value == "1")
{
//执行
}
}
看看你程序的逻辑,
找到一个后, 可不可以break出foreach?
blestcc 2009-04-15
  • 打赏
  • 举报
回复
xml結構是怎樣的?
CeShenBeiWang 2009-04-15
  • 打赏
  • 举报
回复
读取xml问件,本身数据量大了就会降低效率
Jueyoung 2009-04-15
  • 打赏
  • 举报
回复
Linq to xml
wade_li 2009-04-15
  • 打赏
  • 举报
回复
问你2个问题。1。你查询的是任意的文件,也就是说,这个文件你是不知道问题的?
2.如果是自己定义的文件,可以采取特殊的自己定义的关键字,你觉得?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧