XNode.CompareDocumentOrder(XNode, XNode) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Compara dois nós para determinar a ordem relativa dos documentos 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);
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
Devoluções
Um int contendo 0 se os nós forem iguais; -1 se n1 for anterior n2a ; 1 se n1 for após n2.
Exceções
Os dois nós não partilham um ancestral comum.
Exemplos
O exemplo seguinte utiliza 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 exemplo produz a seguinte saída:
el1 is before el2
Observações
Armazena XContainer os seus nós filhos como uma lista única de XNode objetos. Isto significa que o CompareDocumentOrder método deve atravessar os antepassados dos dois nós a comparar até encontrar o progenitor comum. Depois, deve percorrer a lista dos nós filhos do progenitor comum para determinar a ordem dos dois nós a comparar. Portanto, usar este método pode afetar o seu desempenho.