XNode.CompareDocumentOrder(XNode, XNode) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
Gibt zurück
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.