XPathExpression.AddSort Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- XmlSortOrder
- XmlCaseOrder
- XmlDataType
- XmlNamespaceManager
- CultureInfo
- Compare
- SetContext(XmlNamespaceManager)