MS.Internal.Xml.XPath.Query.CompareNodes C# (CSharp) Method

CompareNodes() public static method

public static CompareNodes ( XPathNavigator l, XPathNavigator r ) : XmlNodeOrder
l System.Xml.XPath.XPathNavigator
r System.Xml.XPath.XPathNavigator
return XmlNodeOrder
        public static XmlNodeOrder CompareNodes(XPathNavigator l, XPathNavigator r) {
            XmlNodeOrder cmp = l.ComparePosition(r);
            if (cmp == XmlNodeOrder.Unknown) {
                XPathNavigator copy = l.Clone();
                copy.MoveToRoot();
                string baseUriL = copy.BaseURI;
                if (! copy.MoveTo(r)) {
                    copy = r.Clone();
                }
                copy.MoveToRoot();
                string baseUriR = copy.BaseURI;
                int cmpBase = string.CompareOrdinal(baseUriL, baseUriR);
                cmp = (
                    cmpBase < 0 ? XmlNodeOrder.Before :
                    cmpBase > 0 ? XmlNodeOrder.After  :
                    /*default*/   XmlNodeOrder.Unknown
                );
            }
            return cmp;
        }

Usage Example

        private bool SiftItem(int item)
        {
            ResetableIterator iterator = this.arr[item];

            while ((item + 1) < this.arr.Length)
            {
                XmlNodeOrder order = Query.CompareNodes(iterator.Current, this.arr[item + 1].Current);
                if (order == XmlNodeOrder.Before)
                {
                    break;
                }
                if (order == XmlNodeOrder.After)
                {
                    this.arr[item] = this.arr[item + 1];
                    item++;
                }
                else
                {
                    this.arr[item] = iterator;
                    if (!this.Advance(item))
                    {
                        return(false);
                    }
                    iterator = this.arr[item];
                }
            }
            this.arr[item] = iterator;
            return(true);
        }
All Usage Examples Of MS.Internal.Xml.XPath.Query::CompareNodes