Sorting XML nodes based on DateTime attribute C#, XPath

后端 未结 6 1946
长情又很酷
长情又很酷 2020-12-06 03:09

I have a XML Structure that looks like this.


  

        
6条回答
  •  一个人的身影
    2020-12-06 03:22

    There's an overload of XPathExpression.Addsort which takes an IComparer interface. If you implement the comparison yourself as IComparer, you could use this mechanism.

     class Program
            {
                static void Main(string[] args)
                {
                    XPathDocument saleResults = new XPathDocument( @"salesData.xml" );
                    XPathNavigator navigator = saleResults.CreateNavigator( );
                    XPathExpression selectExpression = navigator.Compile( "sales/item" );
                    XPathExpression sortExpr = navigator.Compile("@sTime");
                    selectExpression.AddSort(sortExpr, new DateTimeComparer());
                    XPathNodeIterator nodeIterator = navigator.Select( selectExpression );            
                    while ( nodeIterator.MoveNext( ) )
                    {
                        string checkMe = nodeIterator.Current.Value;
                    }
                }
                public class DateTimeComparer : IComparer
                {
                    public int Compare(object x, object y)
                    {
                        DateTime dt1 = DateTime.Parse( x.ToString( ) );
                        DateTime dt2 = DateTime.Parse( y.ToString( ) );
                        return dt1.CompareTo( dt2 );
                    }
                }
            }
    

提交回复
热议问题