Freigeben über


XNode.CompareDocumentOrder(XNode, XNode) Methode

Definition

Vergleicht zwei Knoten, um ihre relative XML-Dokument-Reihenfolge zu bestimmen.

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

Parameter

n1
XNode

Das erste zu vergleichende XNode-Objekt.

n2
XNode

Der zweite zu vergleichende XNode.

Gibt zurück

Int32

Ein int mit dem Wert 0 (null), wenn die Knoten gleich sind, -1, wenn n1 vor n2 angeordnet ist, und 1, wenn n1 nach n2 angeordnet ist.

Ausnahmen

Die beiden Knoten verfügen über kein gemeinsames übergeordnetes Element.

Beispiele

Im folgenden Beispiel wird diese Methode verwendet.

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  

Dieses Beispiel erzeugt die folgende Ausgabe:

el1 is before el2  

Hinweise

Die XContainer untergeordneten Knoten werden als singly-verknüpfte Liste von XNode Objekten gespeichert. Dies bedeutet, dass die CompareDocumentOrder Methode die Vorfahren der beiden Knoten durchlaufen muss, die verglichen werden, bis sie das gemeinsame übergeordnete Element findet. Anschließend muss die Liste der untergeordneten Knoten des gemeinsamen übergeordneten Elements durchlaufen werden, um die Reihenfolge der beiden zu vergleichenden Knoten zu ermitteln. Daher kann sich die Verwendung dieser Methode auf Ihre Leistung auswirken.

Gilt für

Siehe auch