XPathExpression.AddSort 메서드

정의

파생 클래스에서 재정의된 경우 XPath 식에서 선택한 노드를 정렬합니다.

오버로드

AddSort(Object, IComparer)

파생 클래스에서 재정의된 경우 XPath 식에서 선택한 노드를 지정된 IComparer 개체에 따라 정렬합니다.

AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType)

파생 클래스에서 재정의된 경우 XPath 식에서 선택한 노드를 전달된 매개 변수에 따라 정렬합니다.

AddSort(Object, IComparer)

파생 클래스에서 재정의된 경우 XPath 식에서 선택한 노드를 지정된 IComparer 개체에 따라 정렬합니다.

public:
 abstract void AddSort(System::Object ^ expr, System::Collections::IComparer ^ comparer);
public abstract void AddSort (object expr, System.Collections.IComparer comparer);
abstract member AddSort : obj * System.Collections.IComparer -> unit
Public MustOverride Sub AddSort (expr As Object, comparer As IComparer)

매개 변수

expr
Object

정렬 키를 나타내는 개체입니다. 이 개체는 노드의 string 값 또는 컴파일된 XPath 식을 가진 XPathExpression 개체가 될 수 있습니다.

comparer
IComparer

두 개체가 서로 같은지 비교하는 데 사용할 특정 데이터 형식 비교를 제공하는 IComparer 개체입니다.

예외

XPathExpression 또는 정렬 키가 접두사를 포함한 상황에서 XmlNamespaceManager가 제공되지 않았거나 제공된 XmlNamespaceManager에서 접두사를 찾을 수 없습니다.

설명

AddSort 메서드를 사용하면 사용자가 문자열이나 숫자 대신 데이터 형식별로 개체를 정렬할 수 있습니다. 개체는 IComparer 사용자 정의 클래스에서 Compare 정렬을 지원하는 메서드의 구현을 제공합니다.

다음 예제에서 설명서는 ISBN 번호로 정렬됩니다. 여기서 isbn 는 인터페이스를 구현하는 개체입니다 IComparer .

Dim expression As XPathExpression = navigator.Compile("bookstore/book")  
Dim isbn As ISBN = New ISBN()  
expression.AddSort("@ISBN", (IComparer)isbn)  
XPathExpression expression = navigator.Compile("bookstore/book");  
ISBN isbn = new ISBN();  
expression.AddSort("@ISBN", (IComparer)isbn);  

다음은 메서드를 사용할 때 고려해야 할 중요한 참고 사항입니다 AddSort .

  • 정렬이 추가되는 순서는 정렬 키 순서를 제공합니다.

  • XPathExpression 정렬 키에 네임스페이스 확인이 필요한 경우 메서드를 SetContext 사용하여 네임스페이 XmlNamespaceManager 스 확인을 제공해야 합니다.

  • XPathExpression 접두사에 없는 경우 네임스페이스 URI(Uniform Resource Identifier)가 빈 네임스페이스라고 가정합니다. XML에 기본 네임스페이스가 포함되어 있는 경우에도 메서드를 SetContext 사용하고 기본 네임스페이스를 처리할 접두사 및 네임스페이스 URI가 포함된 메서드를 제공해야 XmlNamespaceManager 합니다.

추가 정보

적용 대상

AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType)

파생 클래스에서 재정의된 경우 XPath 식에서 선택한 노드를 전달된 매개 변수에 따라 정렬합니다.

public:
 abstract void AddSort(System::Object ^ expr, System::Xml::XPath::XmlSortOrder order, System::Xml::XPath::XmlCaseOrder caseOrder, System::String ^ lang, System::Xml::XPath::XmlDataType dataType);
public abstract void AddSort (object expr, System.Xml.XPath.XmlSortOrder order, System.Xml.XPath.XmlCaseOrder caseOrder, string lang, System.Xml.XPath.XmlDataType dataType);
abstract member AddSort : obj * System.Xml.XPath.XmlSortOrder * System.Xml.XPath.XmlCaseOrder * string * System.Xml.XPath.XmlDataType -> unit
Public MustOverride Sub AddSort (expr As Object, order As XmlSortOrder, caseOrder As XmlCaseOrder, lang As String, dataType As XmlDataType)

매개 변수

expr
Object

정렬 키를 나타내는 개체입니다. 이 개체는 노드의 string 값 또는 컴파일된 XPath 식을 가진 XPathExpression 개체가 될 수 있습니다.

order
XmlSortOrder

정렬 순서를 나타내는 XmlSortOrder 값입니다.

caseOrder
XmlCaseOrder

대/소문자 정렬 방법을 나타내는 XmlCaseOrder 값입니다.

lang
String

비교에 사용되는 언어입니다. 언어 형식(미국 영어의 경우 "us-en")에 대한 CultureInfo 메서드에 전달할 수 있는 Compare 클래스를 사용합니다. 빈 문자열을 지정하면 시스템 환경을 사용하여 CultureInfo를 결정합니다.

dataType
XmlDataType

데이터 형식에 대한 정렬 순서를 나타내는 XmlDataType 값입니다.

예외

XPathExpression 또는 정렬 키가 접두사를 포함한 상황에서 XmlNamespaceManager가 제공되지 않았거나 제공된 XmlNamespaceManager에서 접두사를 찾을 수 없습니다.

예제

다음 예제에서는 책 문서를 가격별로 내림차순으로 정렬하는 방법을 보여줍니다.

Imports System.Xml
Imports System.Xml.XPath

Module Module1

    Sub Main()
        Dim doc As New XPathDocument("contosoBooks.xml")
        Dim nav As XPathNavigator = doc.CreateNavigator()

        Dim expr As XPathExpression
        expr = nav.Compile("/bookstore/book")

        expr.AddSort("price", XmlSortOrder.Descending, _
                          XmlCaseOrder.None, "", XmlDataType.Number)

        Dim iterator As XPathNodeIterator = nav.Select(expr)
        Do While iterator.MoveNext()

            If (iterator.Current.HasChildren()) Then
                Dim childIter As XPathNodeIterator = _
                iterator.Current.SelectChildren(XPathNodeType.Element)
                Do While childIter.MoveNext()
                    Console.WriteLine(childIter.Current.Value)
                Loop

            End If
        Loop

    End Sub

End Module
using System;
using System.Xml;
using System.Xml.XPath;

namespace SortBooks
{
    class Program
    {
        static void Main(string[] args)
        {
            XPathDocument doc = new XPathDocument("contosoBooks.xml");
            XPathNavigator nav = doc.CreateNavigator();

            XPathExpression expr;
            expr = nav.Compile("/bookstore/book");

            expr.AddSort("price", XmlSortOrder.Descending,
                           XmlCaseOrder.None, "", XmlDataType.Number);

            XPathNodeIterator iterator = nav.Select(expr);
            while (iterator.MoveNext())
            {
                if (iterator.Current.HasChildren)
                {
                    XPathNodeIterator childIter =
              iterator.Current.SelectChildren(XPathNodeType.Element);
                    while (childIter.MoveNext())
                    {
                        Console.WriteLine(childIter.Current.Value);
                    }
                }
            }
        }
    }
}

이 예제에서는 books.xml 파일을 입력으로 사용합니다.

<?xml version="1.0" encoding="utf-8" ?>   
<bookstore>  
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">  
        <title>The Autobiography of Benjamin Franklin</title>  
        <author>  
            <first-name>Benjamin</first-name>  
            <last-name>Franklin</last-name>  
        </author>  
        <price>8.99</price>  
    </book>  
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">  
        <title>The Confidence Man</title>  
        <author>  
            <first-name>Herman</first-name>  
            <last-name>Melville</last-name>  
        </author>  
        <price>11.99</price>  
    </book>  
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">  
        <title>The Gorgias</title>  
        <author>  
            <name>Plato</name>  
        </author>  
        <price>9.99</price>  
    </book>  
</bookstore>  

설명

  • 정렬이 추가되는 순서는 정렬 키 순서를 제공합니다.

  • XPathExpression 정렬 키에 네임스페이스 확인이 필요한 경우 메서드를 SetContext 사용하여 네임스페이 XmlNamespaceManager 스 확인을 제공해야 합니다.

  • XPathExpression 접두사에 없는 경우 네임스페이스 URI(Uniform Resource Identifier)가 빈 네임스페이스라고 가정합니다. XML에 기본 네임스페이스가 포함되어 있는 경우에도 메서드를 SetContext 사용하고 기본 네임스페이스를 처리할 접두사 및 네임스페이스 URI가 포함된 메서드를 제공해야 XmlNamespaceManager 합니다.

추가 정보

적용 대상