Freigeben über


XPathExpression.AddSort Methode

Definition

Sortiert beim Überschreiben in einer abgeleiteten Klasse die vom XPath-Ausdruck ausgewählten Knoten.

Überlädt

AddSort(Object, IComparer)

Sortiert beim Überschreiben in einer abgeleiteten Klasse die vom XPath-Ausdruck ausgewählten Knoten anhand des angegebenen IComparer-Objekts.

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

Sortiert beim Überschreiben in einer abgeleiteten Klasse die Knoten, die vom XPath-Ausdruck anhand der bereitgestellten Parameter ausgewählt wurden.

AddSort(Object, IComparer)

Sortiert beim Überschreiben in einer abgeleiteten Klasse die vom XPath-Ausdruck ausgewählten Knoten anhand des angegebenen IComparer-Objekts.

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)

Parameter

expr
Object

Ein Objekt, das den Sortierschlüssel darstellt. Dies kann der string-Wert des Knotens oder ein XPathExpression-Objekt mit einem kompilierten XPath-Ausdruck sein.

comparer
IComparer

Ein IComparer-Objekt, das die spezifischen Datentypvergleiche für den Vergleich zweier Objekte auf Gleichwertigkeit bereitstellt.

Ausnahmen

Der XPathExpression oder Sortierschlüssel enthält ein Präfix, und es ist entweder kein XmlNamespaceManager bereitgestellt, oder das Präfix wird nicht im angegebenen XmlNamespaceManager gefunden.

Hinweise

Mit der AddSort Methode können Benutzer Objekte nach ihrem Datentyp statt nach Zeichenfolge oder Zahl sortieren. Das IComparer Objekt stellt eine Implementierung der Methode bereit, die Compare das Sortieren nach benutzerdefinierten Klassen unterstützt.

Im folgenden Beispiel werden die Bücher nach ISBN-Nummer sortiert, wobei isbn es sich um ein Objekt handelt, das die IComparer Schnittstelle implementiert.

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);  

Im Folgenden sind wichtige Hinweise zur Verwendung der AddSort Methode zu berücksichtigen.

  • Die Reihenfolge, in der die Sortierreihenfolge hinzugefügt wird, stellt die Sortierschlüsselreihenfolge bereit.

  • Wenn der XPathExpression Sortierschlüssel eine Namespaceauflösung erfordert, müssen Sie die SetContext Methode verwenden, um eine XmlNamespaceManager Namespaceauflösung bereitzustellen.

  • Wenn das XPathExpression Präfix nicht enthält, wird davon ausgegangen, dass der Namespace Uniform Resource Identifier (URI) der leere Namespace ist. Wenn Ihr XML einen Standardnamespace enthält, müssen Sie die SetContext Methode weiterhin verwenden und einen XmlNamespaceManager Präfix- und Namespace-URI bereitstellen, um den Standardnamespace zu behandeln.

Siehe auch

Gilt für

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

Sortiert beim Überschreiben in einer abgeleiteten Klasse die Knoten, die vom XPath-Ausdruck anhand der bereitgestellten Parameter ausgewählt wurden.

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)

Parameter

expr
Object

Ein Objekt, das den Sortierschlüssel darstellt. Dies kann der string-Wert des Knotens oder ein XPathExpression-Objekt mit einem kompilierten XPath-Ausdruck sein.

order
XmlSortOrder

Ein XmlSortOrder-Wert, der die Sortierreihenfolge angibt.

caseOrder
XmlCaseOrder

Ein XmlCaseOrder-Wert, der angibt, wie Groß- und Kleinbuchstaben sortiert werden.

lang
String

Die für den Vergleich zu verwendende Sprache. Verwendet die CultureInfo-Klasse, die an die Compare-Methode für die Sprachtypen übergeben werden kann, z. B. "us-en" für Englisch (USA). Wenn eine leere Zeichenfolge angegeben ist, wird die CultureInfo anhand der Systemumgebung bestimmt.

dataType
XmlDataType

Ein XmlDataType-Wert, der die Sortierreihenfolge für den Datentyp angibt.

Ausnahmen

Der XPathExpression oder Sortierschlüssel enthält ein Präfix, und es ist entweder kein XmlNamespaceManager bereitgestellt, oder das Präfix wird nicht im angegebenen XmlNamespaceManager gefunden.

Beispiele

Das folgende Beispiel zeigt, wie Sie das Buchdokument nach Preis in absteigender Reihenfolge sortieren.

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);
                    }
                }
            }
        }
    }
}

In diesem Beispiel wird die Datei books.xml als Eingabe verwendet.

<?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>  

Hinweise

  • Die Reihenfolge, in der die Sortierreihenfolge hinzugefügt wird, stellt die Sortierschlüsselreihenfolge bereit.

  • Wenn der XPathExpression Sortierschlüssel eine Namespaceauflösung erfordert, müssen Sie die SetContext Methode verwenden, um eine XmlNamespaceManager Namespaceauflösung bereitzustellen.

  • Wenn das XPathExpression Präfix nicht enthält, wird davon ausgegangen, dass der Namespace Uniform Resource Identifier (URI) der leere Namespace ist. Wenn Ihr XML einen Standardnamespace enthält, müssen Sie die SetContext Methode weiterhin verwenden und einen XmlNamespaceManager Präfix- und Namespace-URI bereitstellen, um den Standardnamespace zu behandeln.

Siehe auch

Gilt für