xml内容: <?xml version="1.0" encoding="utf-8" ?>
<xml>
<rows>
<row date="2011-09-15" num="1" />
<row date="2011-09-16" num="2" />
<row date="2011-09-17" num="3" />
<row date="2011-09-18" num="4" />
<row date="2011-09-19" num="5" />
<row date="2011-09-20" num="6" />
</rows>
</xml>
读取xml中大于当前日期的内容: XmlDocument xml = new XmlDocument();
xml.Load("D:\\1.xml");
String s = String.Format("xml/rows/row[@date>'{0}']", DateTime.Now.ToString("yyyy-MM-dd"));
XmlNodeList nodes = xml.SelectNodes(s);
Console.WriteLine(nodes.Count);
问题是:
1.当条件是[@date>'{0}']的时候,为什么查不到结果?
2.当条件是[@num>'{0}']的时候,可以查出结果;查询条件是日期和非日期时的写法有什么区别吗?
<xml>
<rows>
<row date="2011-09-15" num="1" />
<row date="2011-09-16" num="2" />
<row date="2011-09-17" num="3" />
<row date="2011-09-18" num="4" />
<row date="2011-09-19" num="5" />
<row date="2011-09-20" num="6" />
</rows>
</xml>
读取xml中大于当前日期的内容: XmlDocument xml = new XmlDocument();
xml.Load("D:\\1.xml");
String s = String.Format("xml/rows/row[@date>'{0}']", DateTime.Now.ToString("yyyy-MM-dd"));
XmlNodeList nodes = xml.SelectNodes(s);
Console.WriteLine(nodes.Count);
问题是:
1.当条件是[@date>'{0}']的时候,为什么查不到结果?
2.当条件是[@num>'{0}']的时候,可以查出结果;查询条件是日期和非日期时的写法有什么区别吗?
<xml>
<rows>
<row date=""2011-09-15"" num=""1"" />
<row date=""2011-09-16"" num=""2"" />
<row date=""2011-09-17"" num=""3"" />
<row date=""2011-09-18"" num=""4"" />
<row date=""2011-09-19"" num=""5"" />
<row date=""2011-09-20"" num=""6"" />
</rows>
</xml>";
XDocument xDoc = XDocument.Parse(xmlSource);
var result = xDoc.Descendants("row").Where(xe => DateTime.Parse(xe.Attribute("date").Value) > DateTime.Now);
result.ToList().ForEach(xe => Response.Write(xe.Attribute("date").Value + " "));/*
2011-09-17 2011-09-18 2011-09-19 2011-09-20
*/
using System.Xml.Linq;
//LZ的方法
XmlDocument xml = new XmlDocument();
xml.Load("D:\\1.xml");
IEnumerable<XmlNode> nodes = xml.SelectNodes("xml/rows/row")
.Cast<XmlNode>()
.Where(node => node.Attributes["date"].Value.CompareTo(DateTime.Now.ToString("yyyy-MM-dd")) > 0);
Console.WriteLine(nodes.Count);C#并没有提供string类型的> <运算符,你需要自己重载
我是这样写的,但是感觉不太简洁 XmlDocument xml = new XmlDocument();
xml.Load("D:\\1.xml");
//String s = string.Format("xml/rows/row[@date>'{0}']", DateTime.Now);
List<XmlNode> list = new List<XmlNode>();
XmlNodeList nodes = xml.SelectNodes("xml/rows/row");
foreach (XmlNode node in nodes)
{
if (DateTime.Compare(Convert.ToDateTime(node.Attributes["date"].Value), Convert.ToDateTime( DateTime.Now.ToString("yyyy-MM-dd")))>0)
{
list.Add(node);
}
}
foreach (XmlNode node in list)
{
Console.WriteLine(node.Attributes["date"].Value);
}
FileStream fs = new FileStream(@"E:\1.xml", FileMode.Open, FileAccess.Read);
DataSet ds = new DataSet();
ds.ReadXml(fs);
DataRow[] row = ds.Tables["row"].Select("date>'" + DateTime.Now.ToString("yyyy-MM-dd") + "'");
foreach (DataRow r in row)
Console.WriteLine(r["date"]);
fs.Close();
fs.Dispose();
.Cast<XmlNode>()
.Where(node => node.Attributes["date"].Value.CompareTo(DateTime.Now.ToString("yyyy-MM-dd")) > 0); 2005
把上面两个换成foeach(XmlNode node in xml.SelectNodes("xml/rows/row"))
if(node.Attributes["date"].Value.CompareTo(DateTime.Now.ToString("yyyy-MM-dd")) > 0)
nodeList.Add(node);