選択されたノードを提供されたパラメータに従って XPathExpression で並べ替えます。
Overloads Public MustOverride Sub AddSort( _
ByVal expr As Object, _ ByVal order As XmlSortOrder, _ ByVal caseOrder As XmlCaseOrder, _ ByVal lang As String, _ ByVal dataType As XmlDataType _)
[C#]
public abstract void AddSort(objectexpr,XmlSortOrderorder,XmlCaseOrdercaseOrder,stringlang,XmlDataTypedataType);
[C++]
public: virtual void AddSort(Object* expr,XmlSortOrderorder,XmlCaseOrdercaseOrder,String* lang,XmlDataTypedataType) = 0;
[JScript]
public abstract function AddSort(
expr : Object,order : XmlSortOrder,caseOrder : XmlCaseOrder,lang : String,dataType : XmlDataType);
パラメータ
- expr
並べ替えキーを表す式。これは、文字列または XPathExpression オブジェクトである場合もあります。この式の結果は、比較のため XPath 仕様に準拠した文字列に変換されます。XSLT スタイルシートで、 xsl:sort が使用されていて、選択式が指定されていない場合、string(.) が既定で使用されます。 - order
並べ替え順序を示す XmlSortOrder 値。 - caseOrder
大文字または小文字で並べ替える方法を示す XmlCaseOrder 値。 lang パラメータが提供されている場合は、言語に依存します。 - lang
比較に使用する言語。US English を示す "us-en" など言語型の String.Compare メソッドに渡すことができる CultureInfo クラスを使用します。空の文字列を指定すると、CultureInfo を確認するためにシステム環境が使用されます。 - dataType
データ型の並べ替え順序を示す XmlDataType 。
例外
例外の種類 | 条件 |
---|---|
XPathException | XPathExpression または並べ替えキーにプリフィックスが含まれ、 XmlNamepsaceManager が提供されていないか、プリフィックスが提供された XmlNamepsaceManager で見つかりません。 |
解説
並べ替えを追加する順序は、並べ替えキー順序を示します。
次の XML がある場合。
<bookstore>
<book>
<price>19.95</price>
</book>
///more books
</bookstore>
C# コードでノードをドキュメントの逆順で処理し、書籍の価格を数値順に並べ替える例を次に示します。
XPathExpression expr = nav.Compile("bookstore/book/price");
expr.AddSort("text()", XmlSortOrder.Descending, XmlCaseOrder.None, "", XmlDataType.Number);
XPathExpression または並べ替えキーで名前空間の解決が必要な場合は、 SetContext メソッドを使用して、名前空間の解決の XmlNamespaceManager を提供する必要があります。
メモ XPathExpression にプリフィックスが含まれていない場合、名前空間 URI は、空の名前空間であると見なされます。XML に既定の名前空間が含まれている場合は、 SetContext メソッドを使用し、プリフィックスと名前空間 URI を含んでいる XmlNamespaceManager を提供して、既定の名前空間を処理する必要があります。
たとえば、次の XML がある場合を示します。
<bookstore xmlns="http://www.lucernepublishing.com">
<book>
<title>Pride And Prejudice</title>
</book>
</bookstore>
すべての book ノードを選択する C# コードを次に示します。
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nav.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XPathExpression expr;
expr = nav.Compile("//ab:book");
expr.SetContext(nsmgr);
XPathNodeIterator iterator = nav.Select(expr);
使用例
[Visual Basic, C#, C++] Jane Austen の著書をすべて選択し、タイトル順に並べ替える例を次に示します。
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
public class Sample
public shared sub Main()
Dim doc as XPathDocument = new XPathDocument("booksort.xml")
Dim nav as XPathNavigator = doc.CreateNavigator()
'Select all books by Jane Austen.
Dim expr as XPathExpression
expr = nav.Compile("descendant::book[author/last-name='Austen']")
'Sort the selected books by title.
expr.AddSort("title", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text)
'Display the selection.
Dim iterator as XPathNodeIterator = nav.Select(expr)
while (iterator.MoveNext())
Dim nav2 as XPathNavigator = iterator.Current.Clone()
nav2.MoveToFirstChild()
Console.WriteLine("Book title: {0}", nav2.Value)
end while
end sub
end class
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
public class Sample
{
public static void Main()
{
XPathDocument doc = new XPathDocument("booksort.xml");
XPathNavigator nav = doc.CreateNavigator();
//Select all books by Jane Austen.
XPathExpression expr;
expr = nav.Compile("descendant::book[author/last-name='Austen']");
//Sort the selected books by title.
expr.AddSort("title", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text);
//Display the selection.
XPathNodeIterator iterator = nav.Select(expr);
while (iterator.MoveNext()){
XPathNavigator nav2 = iterator.Current.Clone();
nav2.MoveToFirstChild();
Console.WriteLine("Book title: {0}", nav2.Value);
}
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::XPath;
int main()
{
XPathDocument* doc = new XPathDocument(S"booksort.xml");
XPathNavigator* nav = doc->CreateNavigator();
//Select all books by Jane Austen.
XPathExpression* expr;
expr = nav->Compile(S"descendant::book[author/last-name='Austen']");
//Sort the selected books by title.
expr->AddSort(S"title", XmlSortOrder::Ascending, XmlCaseOrder::None, S"", XmlDataType::Text);
//Display the selection.
XPathNodeIterator* iterator = nav->Select(expr);
while (iterator->MoveNext()){
XPathNavigator* nav2 = iterator->Current->Clone();
nav2->MoveToFirstChild();
Console::WriteLine(S"Book title: {0}", nav2->Value);
}
}
[Visual Basic, C#, C++] サンプルでは、次の入力ファイルを使用します。
[Visual Basic, C#, C++] booksort.xml
<?xml version="1.0"?>
<!-- a fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples">
<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
<title>Pride And Prejudice</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>24.95</price>
</book>
<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
<title>The Handmaid's Tale</title>
<author>
<first-name>Margaret</first-name>
<last-name>Atwood</last-name>
</author>
<price>29.95</price>
</book>
<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
<title>Emma</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
<title>Sense and Sensibility</title>
<author>
<first-name>Jane</first-name>
<last-name>Austen</last-name>
</author>
<price>19.95</price>
</book>
</bookstore>
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
XPathExpression クラス | XPathExpression メンバ | System.Xml.XPath 名前空間 | XPathExpression.AddSort オーバーロードの一覧