XNode.CompareDocumentOrder(XNode, XNode) Yöntem

Tanım

Göreli XML belge sırasını belirlemede iki düğümü karşılaştırır.Compares two nodes to determine their relative XML document order.

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

Parametreler

n1
XNode

XNodeKarşılaştırmak için önce.First XNode to compare.

n2
XNode

İkinci XNode Karşılaştırılacak.Second XNode to compare.

Döndürülenler

Int32

intDüğümler eşitse 0 içeren bir; 1 ' n1 den önce ise n2 , 1 ise n1 n2 .An int containing 0 if the nodes are equal; -1 if n1 is before n2; 1 if n1 is after n2.

Özel durumlar

İki düğüm ortak bir üst öğe paylaşmaz.The two nodes do not share a common ancestor.

Örnekler

Aşağıdaki örnek bu yöntemi kullanır.The following example uses this method.

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  

Bu örnek aşağıdaki çıktıyı üretir:This example produces the following output:

el1 is before el2  

Açıklamalar

, XContainer Alt düğümlerini listedir bağlantılı nesnelerin bir listesi olarak depolar XNode .The XContainer stores its child nodes as a singly-linked list of XNode objects. Bu, yöntemin, CompareDocumentOrder ortak üst öğeyi bulana kadar karşılaştırılan iki düğümün üst öğelerinden geçmesi gerektiği anlamına gelir.This means that the CompareDocumentOrder method must traverse the ancestors of the two nodes being compared until it finds the common parent. Daha sonra, karşılaştırılan iki düğümün sırasını öğrenmek için ortak üst öğenin alt düğümlerinin listesini gezmelidir.Then it must traverse the list of the common parent's child nodes to determine the order of the two nodes being compared. Bu nedenle, bu yöntemin kullanılması performansınızı etkileyebilir.Therefore, using this method might affect your performance.

Şunlara uygulanır