XNode.CompareDocumentOrder(XNode, XNode) Methode

Definition

Vergleicht zwei Knoten, um die relative XML-Dokumentreihenfolge 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

Zuerst XNode zu vergleichen.

n2
XNode

Zweitens XNode zum Vergleichen.

Gibt zurück

Ein int enthaltende 0, wenn die Knoten gleich sind; -1 wenn n1 vor n2; 1, wenn n1 der Wert liegt n2.

Ausnahmen

Die beiden Knoten teilen keinen gemeinsamen Vorgänger.

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 eine miteinander verknüpfte Liste von XNode Objekten gespeichert. Dies bedeutet, dass die CompareDocumentOrder Methode die Vorgänger der beiden Knoten durchlaufen muss, die verglichen werden, bis das gemeinsame übergeordnete Element gefunden wird. Anschließend muss die Liste der untergeordneten Knoten des gemeinsamen übergeordneten Elements durchlaufen werden, um die Reihenfolge der beiden zu vergleichenden Knoten zu bestimmen. Daher kann sich die Verwendung dieser Methode auf Ihre Leistung auswirken.

Gilt für:

Weitere Informationen