static void Main(string[] args) { string Xml = "<xml><message>ok</message><nu>8865014*****</nu><ischeck>1</ischeck><com>tiantian</com><condition>F00</condition><status>1</status><state>3</state><data><time>2013-11-18 13:09:23</time><context>已签收,签收人是【本人】</context></data><data><time>2013-11-17 20:06:16</time><context>【北京昌平回龙观】正在进行【货件留仓】扫描</context></data><data><time>2013-11-17 04:36:00</time><context>快件已到达【北京昌平回龙观】扫描员是【01046】上一站是【北京集散】</context></data><data><time>2013-11-17 03:32:39</time><context>由【北京集散】发往【北京昌平回龙观】</context></data><data><time>2013-11-16 15:58:26</time><context>快件已到达【北京集散】扫描员是【广州物流车】上一站是【广州】</context></data><data><time>2013-11-13 04:08:28</time><context>由【广州】发往【北京集散】</context></data><data><time>2013-11-13 02:43:23</time><context>由【广州】发往【北京集散】</context></data><data><time>2013-11-13 02:43:22</time><context>【广州】正在进行【装袋】扫描</context></data><data><time>2013-11-13 00:54:56</time><context>快件已到达【广州】扫描员是【许文改】上一站是【广州芳村西�】</context></data><data><time>2013-11-12 23:00:42</time><context>由【广州芳村西�】发往【广州】</context></data><data><time>2013-11-12 23:00:41</time><context>【广州芳村西�】正在进行【装袋】扫描</context></data></xml>"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(Xml); XPathNavigator pathNav = xmlDoc.CreateNavigator(); XPathExpression pathExp = pathNav.Compile("/xml/data"); //排序 pathExp.AddSort("time", XmlSortOrder.Ascending, XmlCaseOrder.None, null, XmlDataType.Text); XPathNodeIterator pathNode = pathNav.Select(pathExp); /*在添加排序的结果之前我们首先需要移除data的数据,这是我们不需要的 得到跟,因为xml格式的问题,这个里面有N个data节点,如果需要完全删除data则需要RemoveChild 因为removeall() 只会移除data内的所有元素 节点,最后保留下<data></data>并不能删除整个data*/ //获取data节点的list XmlNodeList xmlNodeList = xmlDoc.SelectNodes("/xml/data"); for (int i = 0; i < xmlNodeList.Count; i++) xmlDoc.SelectSingleNode("/xml").RemoveChild(xmlNodeList.Item(i)); //XmlNode xmlNode = xmlDoc.SelectSingleNode("/xml/data[time="2013-11-17 04:36:00"]"); //查找还能这样 while (pathNode.MoveNext()) xmlDoc.SelectSingleNode("/xml").InnerXml += pathNode.Current.OuterXml; //在xml节点内循环添加排序后的结果 Console.WriteLine(xmlDoc.OuterXml); Console.Read(); }
using system.xml;
using system.xml.xpath;