XNode.CompareDocumentOrder(XNode, XNode) Méthode

Définition

Compare deux nœuds pour déterminer leur ordre respectif dans le document 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

Paramètres

n1
XNode

Premier XNode à comparer.

n2
XNode

Second XNode à comparer.

Retours

Int32

int contenant 0 si les nœuds sont égaux ; -1 si n1 est avant n2 ; 1 si n1 est après n2.

Exceptions

Les deux nœuds ne partagent pas d'ancêtre commun.

Exemples

L’exemple suivant utilise cette méthode.

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  

Cet exemple produit la sortie suivante :

el1 is before el2  

Remarques

Les XContainer nœuds enfants sont stockés sous la forme d’une liste d’objets XNode liées de manière unique. Cela signifie que la CompareDocumentOrder méthode doit parcourir les ancêtres des deux nœuds comparés jusqu’à ce qu’elle trouve le parent commun. Il doit ensuite parcourir la liste des nœuds enfants du parent commun pour déterminer l’ordre des deux nœuds comparés. Par conséquent, l’utilisation de cette méthode peut affecter vos performances.

S’applique à

Voir aussi