XPathExpression.AddSort メソッド

定義

派生クラスでオーバーライドされた場合、XPath 式で選択されたノードを並べ替えます。

オーバーロード

AddSort(Object, IComparer)

派生クラスでオーバーライドされた場合、XPath 式で選択されたノードを、指定された IComparer オブジェクトに従って並べ替えます。

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

派生クラスでオーバーライドされると、指定されたパラメーターに応じて、XPath 式で選択されたノードを並べ替えます。

AddSort(Object, IComparer)

Source:
XPathExpr.cs
Source:
XPathExpr.cs
Source:
XPathExpr.cs

派生クラスでオーバーライドされた場合、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

2 つのオブジェクトが等しいかどうかを比較するために特定のデータ型を提供する 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 プレフィックスが含まれていない場合は、名前空間 Uniform Resource Identifier (URI) が空の名前空間であると見なされます。 XML に既定の名前空間が含まれている場合でも、 メソッドを SetContext 使用し、既定の名前空間を処理するプレフィックスと名前空間 URI を含む を指定 XmlNamespaceManager する必要があります。

こちらもご覧ください

適用対象

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

Source:
XPathExpr.cs
Source:
XPathExpr.cs
Source:
XPathExpr.cs

派生クラスでオーバーライドされると、指定されたパラメーターに応じて、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

比較に使用する言語。 言語の種類に応じて CultureInfo メソッドに渡すことができる Compare クラスを使用します。たとえば、米国英語の場合は "us-en" になります。 空の文字列を指定すると、システム環境を使用して 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 プレフィックスが含まれていない場合は、名前空間 Uniform Resource Identifier (URI) が空の名前空間であると見なされます。 XML に既定の名前空間が含まれている場合でも、 メソッドを SetContext 使用し、既定の名前空間を処理するプレフィックスと名前空間 URI を含む を指定 XmlNamespaceManager する必要があります。

こちらもご覧ください

適用対象