Sdílet prostřednictvím


XNode.CompareDocumentOrder(XNode, XNode) Metoda

Definice

Porovná dva uzly a určí jejich relativní pořadí dokumentů 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

Nejprve XNode porovnat.

n2
XNode

Druhý XNode pro porovnání.

Návraty

Obsahující int 0, pokud jsou uzly stejné; -1, pokud n1 je před n2; 1, pokud n1 je za n2.

Výjimky

Tyto dva uzly nesdílely společný nadřazený uzel.

Příklady

Následující příklad používá tuto metodu.

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  

Tento příklad vytvoří následující výstup:

el1 is before el2  

Poznámky

Ukládá XContainer podřízené uzly jako jednotlivě propojený seznam XNode objektů. To znamená, že CompareDocumentOrder metoda musí procházet nadřazené uzly, které se porovnávají, dokud nenajde společný nadřazený objekt. Pak musí procházet seznamem podřízených uzlů společného nadřazeného objektu, aby bylo možné určit pořadí porovnávaných dvou uzlů. Proto použití této metody může ovlivnit výkon.

Platí pro

Viz také