XPathExpression.AddSort Methode

Definition

Wenn sie in einer abgeleiteten Klasse überschrieben werden, werden die vom XPath-Ausdruck ausgewählten Knoten sortiert.

Überlädt

Name Beschreibung
AddSort(Object, IComparer)

Wenn sie in einer abgeleiteten Klasse überschrieben werden, werden die vom XPath-Ausdruck ausgewählten Knoten nach dem angegebenen IComparer Objekt sortiert.

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

Wenn sie in einer abgeleiteten Klasse überschrieben werden, werden die vom XPath-Ausdruck ausgewählten Knoten gemäß den angegebenen Parametern sortiert.

AddSort(Object, IComparer)

Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs

Wenn sie in einer abgeleiteten Klasse überschrieben werden, werden die vom XPath-Ausdruck ausgewählten Knoten nach dem angegebenen IComparer Objekt sortiert.

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 eines XPathExpression Objekts mit einem kompilierten XPath-Ausdruck sein.

comparer
IComparer

Ein IComparer Objekt, das die spezifischen Datentypvergleiche zum Vergleichen von zwei Objekten für die Äquivalenz bereitstellt.

Ausnahmen

Der XPathExpression Oder Sortierschlüssel enthält ein Präfix, und entweder wird kein XmlNamespaceManager Präfix angegeben, oder das Präfix kann nicht im angegebenen XmlNamespaceManagerGefunden werden.

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 finden Sie wichtige Hinweise, die Sie bei der Verwendung der AddSort Methode berücksichtigen sollten.

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

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

  • Wenn das XPathExpression Präfix nicht enthalten ist, 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 Namespace-URI bereitstellen, der einen Präfix- und Namespace-URI enthält, um den Standardnamespace zu verarbeiten.

Weitere Informationen

Gilt für:

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

Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs
Quelle:
XPathExpr.cs

Wenn sie in einer abgeleiteten Klasse überschrieben werden, werden die vom XPath-Ausdruck ausgewählten Knoten gemäß den angegebenen Parametern sortiert.

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 eines XPathExpression Objekts 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 US-Englisch. Wenn eine leere Zeichenfolge angegeben wird, wird die Systemumgebung verwendet, um die CultureInfo.

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 entweder wird kein XmlNamespaceManager Präfix angegeben, oder das Präfix kann nicht im angegebenen XmlNamespaceManagerGefunden werden.

Beispiele

Das folgende Beispiel zeigt, wie Das Buchdokument nach Preis in absteigender Reihenfolge sortiert wird.

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

Im Beispiel wird die books.xml Datei 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 Oder der Sortierschlüssel die Namespaceauflösung erfordert, müssen Sie die SetContext Methode verwenden, um eine XmlNamespaceManager Namespaceauflösung bereitzustellen.

  • Wenn das XPathExpression Präfix nicht enthalten ist, 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 Namespace-URI bereitstellen, der einen Präfix- und Namespace-URI enthält, um den Standardnamespace zu verarbeiten.

Weitere Informationen

Gilt für: