Condividi tramite


XNode.CompareDocumentOrder(XNode, XNode) Metodo

Definizione

Confronta due nodi per determinare l'ordine del documento XML relativo.

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

Parametri

n1
XNode

Primo oggetto XNode da confrontare.

n2
XNode

Secondo oggetto XNode da confrontare.

Restituisce

Un int che contiene 0 se i nodi sono uguali; -1 se n1 viene prima di n2; 1 se n1 viene dopo n2.

Eccezioni

I due nodi non condividono un predecessore comune.

Esempio

Nell'esempio seguente viene usato questo metodo.

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  

Nell'esempio viene prodotto l'output seguente:

el1 is before el2  

Commenti

I XContainer nodi figlio vengono archiviati come elenco collegato in modo autonomo di XNode oggetti. Ciò significa che il CompareDocumentOrder metodo deve attraversare i predecessori dei due nodi confrontati finché non trova il padre comune. Deve quindi attraversare l'elenco dei nodi figlio dell'elemento padre comune per determinare l'ordine dei due nodi confrontati. Pertanto, l'uso di questo metodo potrebbe influire sulle prestazioni.

Si applica a

Vedi anche