XNode.CompareDocumentOrder Method
Compares two nodes to determine their relative XML document order.
Assembly: System.Xml.Linq (in System.Xml.Linq.dll)
Parameters
- n1
- Type: System.Xml.Linq.XNode
First XNode to compare.
- n2
- Type: System.Xml.Linq.XNode
Second XNode to compare.
Return Value
Type: System.Int32An int containing 0 if the nodes are equal; -1 if n1 is before n2; 1 if n1 is after n2.
| Exception | Condition |
|---|---|
| InvalidOperationException | 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"); else Console.WriteLine("el1 is before el2");
This example produces the following output:
el1 is before el2
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.