<?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)
{
//.......
}
}
以上代码经测试没有找到相应节点集,求高手解答,应如何编写查询条件?
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;
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("---------------------");
}
}