CompareDocumentOrder Method

XNode.CompareDocumentOrder Method (XNode, XNode)


Compares two nodes to determine their relative XML document order.

Namespace:   System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)

public static int CompareDocumentOrder(
	XNode n1,
	XNode n2


Type: System.Xml.Linq.XNode

First XNode to compare.

Type: System.Xml.Linq.XNode

Second XNode to compare.

Return Value

Type: System.Int32

An int containing 0 if the nodes are equal; -1 if n1 is before n2; 1 if n1 is after n2.

Exception Condition

The two nodes do not share a common ancestor.

The XContainer stores its child nodes as a singly-linked list of XNode objects. This means that the CompareDocumentOrder method must traverse the ancestors of the two nodes being compared until it finds the common parent. Then it must traverse the list of the common parent’s child nodes to determine the order of the two nodes being compared. Therefore, using this method might affect your performance.

The following example uses this method.

XElement xmlTree = new XElement("Root",
    new XElement("Child1",
        new XElement("GrandChild1", 1),
        new XElement("GrandChild2", 2),
        new XElement("GrandChild3", 3)
    new XElement("Child2",
        new XElement("GrandChild4", 4),
        new XElement("GrandChild5", 5),
        new XElement("GrandChild6", 6)
XElement el1 = xmlTree.Descendants("GrandChild2").First();
XElement el2 = xmlTree.Descendants("GrandChild6").First();
if (XElement.CompareDocumentOrder(el1, el2) == 0)
    Console.WriteLine("Compared elements are the same element");
else if (XElement.CompareDocumentOrder(el1, el2) > 0)
    Console.WriteLine("el1 is after el2");
    Console.WriteLine("el1 is before el2");

This example produces the following output:

el1 is before el2

Universal Windows Platform
Available since 4.5
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top
© 2015 Microsoft