XNode.CompareDocumentOrder(XNode, XNode) Método

Definição

Compara dois nós para determinar sua ordem de documento XML relativa.Compares two nodes to determine their relative XML document order.

``````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

Primeiro XNode a ser comparado.First XNode to compare.

n2
XNode

Segundo XNode de comparação.Second XNode to compare.

Retornos

Int32

Um `int` contendo 0 se os nós forem iguais; -1 se `n1` vier antes de `n2`; 1 se `n1` vier depois de `n2`.An `int` containing 0 if the nodes are equal; -1 if `n1` is before `n2`; 1 if `n1` is after `n2`.

Exceções

Os dois nós não compartilham um ancestral comum.The two nodes do not share a common ancestor.

Exemplos

O exemplo a seguir usa esse método.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");
``````
``````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
``````

Esse exemplo gera a saída a seguir:This example produces the following output:

``````el1 is before el2
``````

Comentários

O XContainer armazena seus nós filho como uma lista de objetos vinculada individualmente XNode .The XContainer stores its child nodes as a singly-linked list of XNode objects. Isso significa que o CompareDocumentOrder método deve atravessar os ancestrais dos dois nós que estão sendo comparados até encontrar o pai comum.This means that the CompareDocumentOrder method must traverse the ancestors of the two nodes being compared until it finds the common parent. Em seguida, ele deve atravessar a lista dos nós filho do pai comum para determinar a ordem dos dois nós que estão sendo comparados.Then it must traverse the list of the common parent's child nodes to determine the order of the two nodes being compared. Portanto, o uso desse método pode afetar o desempenho.Therefore, using this method might affect your performance.