Aracılığıyla paylaş


XNode.CompareDocumentOrder(XNode, XNode) Yöntem

Tanım

göreli XML belge sırasını belirlemek için iki düğümü karşılaştırır.

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

Karşılaştıracak ilk XNode .

n2
XNode

Karşılaştırmak için ikinci XNode .

Döndürülenler

Int32

int Düğümler eşitse 0 içeren bir; önceyse n1 n2-1; sonraysa n1 n21.

Özel durumlar

İki düğüm ortak bir atası paylaşmaz.

Örnekler

Aşağıdaki örnekte bu yöntem kullanılır.

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 çıkışı oluşturur:

el1 is before el2  

Açıklamalar

alt XContainer düğümlerini nesnelerin tek bağlantılı bir listesi XNode olarak depolar. Bu, yöntemin CompareDocumentOrder ortak üst öğeyi bulana kadar karşılaştırılmakta olan iki düğümün üst öğelerinden geçmesi gerektiği anlamına gelir. Ardından, karşılaştırılan iki düğümün sırasını belirlemek için ortak üst düğümün alt düğümleri listesinden geçmesi gerekir. Bu nedenle, bu yöntemin kullanılması performansınızı etkileyebilir.

Şunlara uygulanır

Ayrıca bkz.