XPathExpression.AddSort Metodo

Definizione

Quando sottoposto a override in una classe derivata, ordina i nodi selezionati dall'espressione XPath.

Overload

Nome Descrizione
AddSort(Object, IComparer)

Quando sottoposto a override in una classe derivata, ordina i nodi selezionati dall'espressione XPath in base all'oggetto specificato IComparer .

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

Quando sottoposto a override in una classe derivata, ordina i nodi selezionati dall'espressione XPath in base ai parametri forniti.

AddSort(Object, IComparer)

Origine:
XPathExpr.cs
Origine:
XPathExpr.cs
Origine:
XPathExpr.cs
Origine:
XPathExpr.cs
Origine:
XPathExpr.cs

Quando sottoposto a override in una classe derivata, ordina i nodi selezionati dall'espressione XPath in base all'oggetto specificato 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)

Parametri

expr
Object

Oggetto che rappresenta la chiave di ordinamento. Può trattarsi del string valore del nodo o di un XPathExpression oggetto con un'espressione XPath compilata.

comparer
IComparer

Oggetto IComparer che fornisce i confronti di tipi di dati specifici per confrontare due oggetti per l'equivalenza.

Eccezioni

La XPathExpression chiave di ordinamento o include un prefisso e non viene fornito un XmlNamespaceManager oggetto oppure non è possibile trovare il prefisso nell'oggetto fornito XmlNamespaceManager.

Commenti

Il AddSort metodo consente agli utenti di ordinare gli oggetti in base al tipo di dati anziché per stringa o numero. L'oggetto IComparer fornisce un'implementazione del metodo che supporta l'ordinamento Compare in classi definite dall'utente.

Nell'esempio seguente i libri vengono ordinati in base al numero ISBN, dove isbn è un oggetto che implementa l'interfaccia 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);

Di seguito sono riportate note importanti da considerare quando si usa il AddSort metodo .

  • L'ordine in cui vengono aggiunti gli ordinamenti fornisce l'ordinamento della chiave.

  • Se o la XPathExpression chiave di ordinamento richiede la risoluzione dello spazio dei nomi, è necessario usare il SetContext metodo per fornire un oggetto XmlNamespaceManager per la risoluzione dello spazio dei nomi.

  • XPathExpression Se non include un prefisso, si presuppone che lo spazio dei nomi Uniform Resource Identifier (URI) sia lo spazio dei nomi vuoto. Se il codice XML include uno spazio dei nomi predefinito, è comunque necessario usare il SetContext metodo e specificare un XmlNamespaceManager oggetto contenente un prefisso e un URI dello spazio dei nomi per gestire lo spazio dei nomi predefinito.

Vedi anche

Si applica a

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

Origine:
XPathExpr.cs
Origine:
XPathExpr.cs
Origine:
XPathExpr.cs
Origine:
XPathExpr.cs
Origine:
XPathExpr.cs

Quando sottoposto a override in una classe derivata, ordina i nodi selezionati dall'espressione XPath in base ai parametri forniti.

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)

Parametri

expr
Object

Oggetto che rappresenta la chiave di ordinamento. Può trattarsi del string valore del nodo o di un XPathExpression oggetto con un'espressione XPath compilata.

order
XmlSortOrder

Valore XmlSortOrder che indica l'ordinamento.

caseOrder
XmlCaseOrder

Valore XmlCaseOrder che indica come ordinare lettere maiuscole e minuscole.

lang
String

Lingua da utilizzare per il confronto. Usa la CultureInfo classe che può essere passata al Compare metodo per i tipi di lingua, ad esempio "us-en" per l'inglese statunitense. Se viene specificata una stringa vuota, l'ambiente di sistema viene usato per determinare l'oggetto CultureInfo.

dataType
XmlDataType

Valore XmlDataType che indica l'ordinamento per il tipo di dati.

Eccezioni

La XPathExpression chiave di ordinamento o include un prefisso e non viene fornito un XmlNamespaceManager oggetto oppure non è possibile trovare il prefisso nell'oggetto fornito XmlNamespaceManager.

Esempio

Nell'esempio seguente viene illustrato come ordinare il documento dei libri in base al prezzo in ordine decrescente.

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

L'esempio accetta il file books.xml come input.

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

Commenti

  • L'ordine in cui vengono aggiunti gli ordinamenti fornisce l'ordinamento della chiave.

  • Se o la XPathExpression chiave di ordinamento richiede la risoluzione dello spazio dei nomi, è necessario usare il SetContext metodo per fornire un oggetto XmlNamespaceManager per la risoluzione dello spazio dei nomi.

  • XPathExpression Se non include un prefisso, si presuppone che lo spazio dei nomi Uniform Resource Identifier (URI) sia lo spazio dei nomi vuoto. Se il codice XML include uno spazio dei nomi predefinito, è comunque necessario usare il SetContext metodo e specificare un XmlNamespaceManager oggetto contenente un prefisso e un URI dello spazio dei nomi per gestire lo spazio dei nomi predefinito.

Vedi anche

Si applica a