Udostępnij za pośrednictwem


XNode.CompareDocumentOrder(XNode, XNode) Metoda

Definicja

Porównuje dwa węzły, aby określić ich względną kolejność dokumentów 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

Parametry

n1
XNode

Najpierw XNode należy porównać.

n2
XNode

Drugi XNode do porównania.

Zwraca

Wartość zawierająca int 0, jeśli węzły są równe; -1, jeśli n1 jest wcześniejsza n2; 1, jeśli n1 jest po n2.

Wyjątki

Dwa węzły nie współdzielą wspólnego przodka.

Przykłady

W poniższym przykładzie użyto tej metody.

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  

Ten przykład generuje następujące wyniki:

el1 is before el2  

Uwagi

Obiekt XContainer przechowuje węzły podrzędne jako listę obiektów połączonych XNode ze sobą. Oznacza to, że CompareDocumentOrder metoda musi przechodzić przez elementy nadrzędne dwóch węzłów porównywanych do momentu znalezienia wspólnego elementu nadrzędnego. Następnie musi przechodzić przez listę węzłów podrzędnych wspólnego elementu nadrzędnego, aby określić kolejność porównywanych dwóch węzłów. W związku z tym użycie tej metody może mieć wpływ na wydajność.

Dotyczy

Zobacz też