XPathExpression.AddSort 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 재정의된 경우 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 개체가 될 수 있습니다.
예외
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 합니다.
추가 정보
- XmlSortOrder
- XmlCaseOrder
- XmlDataType
- XmlNamespaceManager
- CultureInfo
- Compare
- SetContext(XmlNamespaceManager)