XPathExpression.AddSort メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
派生クラスでオーバーライドされた場合、XPath 式で選択されたノードを並べ替えます。
オーバーロード
AddSort(Object, IComparer) |
派生クラスでオーバーライドされた場合、XPath 式で選択されたノードを、指定された IComparer オブジェクトに従って並べ替えます。 |
AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType) |
派生クラスでオーバーライドされると、指定されたパラメーターに応じて、XPath 式で選択されたノードを並べ替えます。 |
AddSort(Object, IComparer)
- ソース:
- XPathExpr.cs
- ソース:
- XPathExpr.cs
- ソース:
- 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 オブジェクトの場合もあります。
例外
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)
- ソース:
- XPathExpr.cs
- ソース:
- XPathExpr.cs
- ソース:
- 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 する必要があります。
こちらもご覧ください
- XmlSortOrder
- XmlCaseOrder
- XmlDataType
- XmlNamespaceManager
- CultureInfo
- Compare
- SetContext(XmlNamespaceManager)
適用対象
.NET