aa.xml文档如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<根节点>
  <ITEM>
<item1 />
<item2 />
  </ITEM>
<ITEM>
<item1 />
<item2 />
  </ITEM>
<ITEM>
<item1 />
<item2 />
  </ITEM>
..................<ITEM>
<item1 />
<item2 />
  </ITEM>
</根节点>
这个XML是放在网上的,用什么方法能最快将<ITEM>的数量读出来?我现在的读法是
int num=0;//ITEM的数量
XmlDocument theDoc = new XmlDocument();
theDoc.Load("http://wwww.aaa/aa.xml");
num = theDoc.ChildNodes[1].ChildNodes;
这样读数据量小还可以接受,但数据量大的话,就会很慢,怎么读最快,请指点,谢谢 在线等

解决方案 »

  1.   

        XmlNodeList nodelist = theDoc.GetElementsByTagName("ITEM");
    foreacm(xmlnode node in nodelist)
    {
     每个node就是一个完整的<ITEM>..</ITEM>;
    }
      

  2.   


    这个还要是先load那个XML的,速度应该还是一样吧
      

  3.   

    我现在不需要知道<ITEM>里的内容,只想用最快的方法得到<ITEM>的数量
      

  4.   

    aa.xm是你创建的吗?如果是,可以在前面建一个itemcount节点,用xmlreader读
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  5.   


            XmlDocument theDoc = new XmlDocument();
            theDoc.Load("http://wwww.aaa/aa.xml");
            XmlNodeList x = theDoc.SelectNodes("ITEM");
            int i = x.Count;
    //不知道行不行
      

  6.   


    aa.xml不能修改,别人也在用这个XML,
      

  7.   

    将这个代码读到ADO对象里,生成一个table,对table再处理是不是会更好一些?
      

  8.   

    这是XML文件里的内容:
    <Messages>
    <Message ID='ABC60008'>
        <![CDATA[<Message ID='ABC60008'><UseType>S</UseType><MainClassification>FW</MainClassification><MessageType>W</MessageType><EventType>6</EventType><VoluntaryCode>0008</VoluntaryCode><MessageBody>连接成功。</MessageBody><UserMessageID></UserMessageID><MonitoringLevel>1</MonitoringLevel></Message>]]>
      </Message>
      </Message>自己写了一个MyMessage的类,里面存放MESSAGE的属性
    private MyMessage ConvertToMessageData(string xmlValue)
            {
                string messageId = string.Empty;
                string useType = string.Empty;
                string mainClassification = string.Empty;
                string messageType = string.Empty;
                string messageBody = string.Empty;            XmlDocument document = null;
                MyMessage data = new MyMessage(null, null, null, null, null);
                try
                {
                    document = new XmlDocument();
                    document.LoadXml(xmlValue);
                    messageId = document.SelectNodes("/Message").Item(0).Attributes.GetNamedItem("ID").Value;
                    useType = document.SelectNodes("/Message/UseType").Item(0).InnerText;
                    mainClassification = document.SelectNodes("/Message/MainClassification").Item(0).InnerText;
                    messageType = document.SelectNodes("/Message/MessageType").Item(0).InnerText;
                    messageBody = document.SelectNodes("/Message/MessageBody").Item(0).InnerText;
                    data = new MyMessage(messageId, useType, mainClassification, messageType, messageBody);
                }
                catch (Exception exception)
                {
                   thow ;
                }
                return data;
            }
      

  9.   


    上面搞错了
            XmlDocument theDoc = new XmlDocument();
            theDoc.Load("http://wwww.aaa/aa.xml");
            XmlNodeList x = theDoc.SelectNodes("根节点/ITEM");  //改这里
            int i = x.Count;速度就不知道了Xml文件如果太大的话 ,我想也没什么好方法来吧.总之他要循环找出来吧
      

  10.   

    可以用DataSet.ReadXml方法试试。
      

  11.   


    dataset我试过了,跟XmlDocument的速度差不多,都很慢
      

  12.   

    XmlReader 类 有能读出<ITEM>数量的方法没,找了一上午都没找到
      

  13.   


    怎么读那个XML呢,我现在只需要读,不需要对其进行操作
      

  14.   

     XDocument.Load(Application.StartupPath + "\\" + "SerialPortSet.xml");
                    XmlNode node = XDocument.SelectSingleNode("设置/参数/SerialPort_1");
      

  15.   

    定义文件结构,然后用流直接写到文件中,保存,这样会比XML小不知道多少倍,再读出来的时候即使把整个文件都加载进来也不算慢,但有一点就是不通用,如果别人不知道你的文件结构就没有办法读取你的文件(这里和XML不一样);我曾经试过同样的数据一种用XML序列化保存数据一种用二进制序列化保存数据,二进制要小很多
      

  16.   

                
    FileStream fs = new FileStream(@"c:\1.txt", FileMode.Create);
                BinaryWriter BW = new BinaryWriter(fs);
                BW.Write("ipqiejtrqpirtjpaoiwfj");
                BW.Write(200);
                BW.Write(true);
                BW.Write(new char[] { 'a', 'b', '你' });
                BW.Close();
                fs.Close();可以用BinaryReader类读出来;
      

  17.   

    现在的文件都是以XML存储的,我只能去读XML,有没有什么好办法能读得快些