<?xml version="1.0" encoding="UTF-8"?>
<Chats>
  <DateTime value="2011-06-30">
    <Message>
      <FromUserID value="333" />333</FromUserID>
      <FromUserName value="444" />
      <FromUserType value="2" />
      <ToUserID value="110" />
      <Message value="hihihihihihi" />
      <MessgType value="2" />
      <SendDataTime value="15:58:00" />
    </Message>
    <Message>
      <FromUserID value="333" />
      <FromUserName value="444" />
      <FromUserType value="2" />
      <ToUserID value="110" />
      <Message value="hihihihihihi" />
      <MessgType value="2" />
      <SendDataTime value="16:00:00" />
    </Message>
  </DateTime>
  <DateTime value="2011-07-13">
    <Message>
      <FromUserID value="1" />
      <FromUserName value="asdfsaf" />
      <FromUserType value="1" />
      <ToUserID value="110" />
      <Message value="asdfsadf" />
      <MessgType value="2" />
      <SendDataTime value="2011-07-13 03:30:38" />
    </Message>
    <Message>
      <FromUserID value="1" />
      <FromUserName value="asdfsaf" />
      <FromUserType value="2" />
      <ToUserID value="110" />
      <Message value="asfddd" />
      <MessgType value="2" />
      <SendDataTime value="2011-07-13 03:31:22" />
    </Message>
  </DateTime>
  <DateTime value="2011-08-05">
    <Message>
      <FromUserID value="110" />
      <FromUserName value="110" />
      <FromUserType value="1" />
      <ToUserID value="1" />
      <Message value="步步步步" />
      <MessgType value="2" />
      <SendDataTime value="2011-08-05 09:44:09" />
    </Message>
    <Message>
      <FromUserID value="110" />
      <FromUserName value="110" />
      <FromUserType value="1" />
      <ToUserID value="1" />
      <Message value="123456789" />
      <MessgType value="2" />
      <SendDataTime value="2011-08-05 09:44:42" />
    </Message>
  </DateTime>
  <DateTime value="2011-08-10">
    <Message>
      <FromUserID value="1" />
      <FromUserName value="zuo" />
      <FromUserType value="2" />
      <ToUserID value="110" />
      <Message value="hi" />
      <MessgType value="2" />
      <SendDataTime value="2011-08-10 09:32:24" />
    </Message>
    <Message>
      <FromUserID value="110" />
      <FromUserName value="110" />
      <FromUserType value="1" />
      <ToUserID value="1" />
      <Message value="你好" />
      <MessgType value="2" />
      <SendDataTime value="2011-08-10 09:33:00" />
    </Message>
   </DateTime>
</Chats>
按DateTime节点,进行时间范围的查询
两天内的所有Message节点
一周内的所有Message节点
一月内的所有Message节点
....
XmlDocument doc = new XmlDocument();
doc.Load(path);
string strDate = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
string strWhere = "/Chats/DateTime[@value > '" + strDate + "' and @value <= '" + DateTime.Now.ToString("yyyy-MM-dd") + "']";
XmlNodeList xnx = doc.SelectNodes(strWhere);
foreach (XmlNode partNode in xnx)
{
     foreach (XmlNode xmlNode in partNode.ChildNodes)
     {
             //.......
     }
}
以上代码经测试没有找到相应节点集,求高手解答,应如何编写查询条件?

解决方案 »

  1.   


                XDocument xdoc = XDocument.Load(@"D:\test.xml");
                //两天内的所有Message节点
                var r = from o in xdoc.Elements("Chats").Elements()
                        where  DateTime.Now.Subtract(DateTime.Parse(o.Attribute("value").Value)).Days < 2
                        select o;
      

  2.   

    C# 有var 类型? 好吧,我又无知了,复制到项目里根本不能编译
      

  3.   

    .net 2.0 表示压力很大....那几条语句是3.5以上的吧
      

  4.   


                XmlDocument doc = new XmlDocument();
                doc.Load("E:\\test.xml");
                foreach (XmlNode node in doc.SelectNodes("/Chats/DateTime"))
                {
                    if ((DateTime.Today - DateTime.Parse(node.Attributes["value"].Value)).Days <= 2)
                    {
                        Console.WriteLine(node.InnerXml);
                        Console.WriteLine("---------------------");
                    }
                }