XNode.CompareDocumentOrder(XNode, XNode) 方法

定義

比較兩個節點,以確定其相對的 XML 文件順序。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);
static member CompareDocumentOrder : System.Xml.Linq.XNode * System.Xml.Linq.XNode -> int
Public Shared Function CompareDocumentOrder (n1 As XNode, n2 As XNode) As Integer

參數

n1
XNode

要比較的第一個 XNodeFirst XNode to compare.

n2
XNode

要比較的第二個 XNodeSecond XNode to compare.

傳回

int 包含 0 表示這兩個節點相等,包含 -1 表示 n1n2 之前,包含 1 則表示 n1n2 之後。An int containing 0 if the nodes are equal; -1 if n1 is before n2; 1 if n1 is after n2.

例外狀況

這兩個節點不會共用共同的祖系。The two nodes do not share a common ancestor.

範例

下列範例會使用這個方法。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  

這個範例會產生下列輸出:This example produces the following output:

el1 is before el2  

備註

XContainer 會將其子節點儲存為 XNode 物件的單一連結清單。The XContainer stores its child nodes as a singly-linked list of XNode objects. 這表示 CompareDocumentOrder 方法必須先將兩個節點的祖系進行比較,直到找到一般父系為止。This means that the CompareDocumentOrder method must traverse the ancestors of the two nodes being compared until it finds the common parent. 然後,它必須跨越一般父系的子節點清單,以判斷兩個節點的順序是否比較。Then it must traverse the list of the common parent's child nodes to determine the order of the two nodes being compared. 因此,使用此方法可能會影響您的效能。Therefore, using this method might affect your performance.

適用於

另請參閱