XNode.CompareDocumentOrder(XNode, XNode) Метод

Определение

Сравнивает два узла, чтобы определить их относительный порядок 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

Параметры

n1
XNode

Сначала нужно XNode сравнить.

n2
XNode

Во-вторых XNode , чтобы сравнить.

Возвращаемое значение

Значение int 0, если узлы равны; -1, если n1 раньше n2; 1, если n1 после n2.

Исключения

Два узла не имеют общего предка.

Примеры

В следующем примере используется этот метод.

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

В примере получается следующий вывод.

el1 is before el2

Комментарии

Хранит XContainer дочерние узлы в виде последовательно связанного XNode списка объектов. Это означает, что CompareDocumentOrder метод должен пройти по предкам двух узлов, которые сравниваются, пока он не найдет общего родительского элемента. Затем он должен пройти по списку дочерних узлов общего родительского элемента, чтобы определить порядок сравнения двух узлов. Поэтому использование этого метода может повлиять на производительность.

Применяется к

См. также раздел