XNode.CompareDocumentOrder(XNode, XNode) Método

Definición

Compara dos nodos para determinar su orden relativo del documento XML.

public:
 static int CompareDocumentOrder(System::Xml::Linq::XNode ^ n1, System::Xml::Linq::XNode ^ n2);
public static int CompareDocumentOrder(System.Xml.Linq.XNode n1, System.Xml.Linq.XNode n2);
public static int CompareDocumentOrder(System.Xml.Linq.XNode? n1, System.Xml.Linq.XNode? n2);
static member CompareDocumentOrder : System.Xml.Linq.XNode * System.Xml.Linq.XNode -> int
Public Shared Function CompareDocumentOrder (n1 As XNode, n2 As XNode) As Integer

Parámetros

n1
XNode

Primero XNode que se va a comparar.

n2
XNode

Segundo XNode que se va a comparar.

Devoluciones

que int contiene 0 si los nodos son iguales; -1 si n1 es anterior n2a ; 1 si n1 es después n2de .

Excepciones

Los dos nodos no comparten un antecesor común.

Ejemplos

En el ejemplo siguiente se usa este método.

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");
Dim xmlTree As XElement = _
        <Root>
            <Child1>
                <GrandChild1>1</GrandChild1>
                <GrandChild2>2</GrandChild2>
                <GrandChild3>3</GrandChild3>
            </Child1>
            <Child2>
                <GrandChild4>4</GrandChild4>
                <GrandChild5>5</GrandChild5>
                <GrandChild6>6</GrandChild6>
            </Child2>
        </Root>

Dim el1 As XElement = xmlTree...<GrandChild2>(0)
Dim el2 As XElement = xmlTree...<GrandChild6>(0)

If (XElement.CompareDocumentOrder(el1, el2) = 0) Then
    Console.WriteLine("Compared elements are the same element")
ElseIf (XElement.CompareDocumentOrder(el1, el2) > 0) Then
    Console.WriteLine("el1 is after el2")
Else
    Console.WriteLine("el1 is before el2")
End If

Este ejemplo produce el siguiente resultado:

el1 is before el2

Comentarios

XContainer almacena sus nodos secundarios como una lista vinculada de forma singly de XNode objetos. Esto significa que el CompareDocumentOrder método debe atravesar los antecesores de los dos nodos que se comparan hasta que encuentra el elemento primario común. A continuación, debe atravesar la lista de nodos secundarios del elemento primario común para determinar el orden de los dos nodos que se comparan. Por lo tanto, el uso de este método puede afectar al rendimiento.

Se aplica a

Consulte también