XNode.CompareDocumentOrder(XNode, XNode) Metod

Definition

Jämför två noder för att fastställa deras relativa XML-dokumentordning.

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

Parametrar

n1
XNode

Först XNode att jämföra.

n2
XNode

För det andra XNode att jämföra.

Returer

En int som innehåller 0 om noderna är lika med; -1 om n1 är före n2; 1 om n1 är efter n2.

Undantag

De två noderna delar inte en gemensam överordnad.

Exempel

I följande exempel används den här metoden.

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

Det här exemplet genererar följande utdata:

el1 is before el2

Kommentarer

Lagrar XContainer sina underordnade noder som en singly-länkad lista över XNode objekt. Det innebär att CompareDocumentOrder metoden måste korsa överordnade noder för de två noder som jämförs tills den hittar den gemensamma överordnade. Sedan måste den bläddra igenom listan över de gemensamma överordnade noderna för att fastställa ordningen på de två noder som jämförs. Därför kan användningen av den här metoden påverka prestandan.

Gäller för

Se även