XPathExpression.AddSort Metodo

Definizione

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

Overload

AddSort(Object, IComparer)

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

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 specificati.

AddSort(Object, IComparer)

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

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

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ò essere il valore string del nodo o un oggetto XPathExpression con un'espressione XPath compilata.

comparer
IComparer

Oggetto IComparer che fornisce i confronti di tipi di dati specifici per il confronto di due oggetti allo scopo di verificarne l'equivalenza.

Eccezioni

L'oggetto XPathExpression o la chiave di ordinamento includono un prefisso e un oggetto XmlNamespaceManager non viene specificato oppure non è possibile trovare il prefisso nell'oggetto XmlNamespaceManager indicato.

Commenti

Il AddSort metodo consente agli utenti di ordinare gli oggetti in base al tipo di dati anziché per stringa o numero. L'oggetto IComparerCompare fornisce un'implementazione del metodo che supporta l'ordinamento sulle 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'ordine della chiave di ordinamento.

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

  • Se non XPathExpression 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

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

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ò essere il valore string del nodo o un oggetto XPathExpression con un'espressione XPath compilata.

order
XmlSortOrder

Valore XmlSortOrder che indica l'ordinamento.

caseOrder
XmlCaseOrder

Valore XmlCaseOrder che indica la modalità di ordinamento di lettere maiuscole e lettere minuscole.

lang
String

Lingua da usare per il confronto. Utilizza la classe CultureInfo che può essere passata al metodo Compare per indicare i tipi di lingua, ad esempio "us-en" per Inglese Stati Uniti. 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

L'oggetto XPathExpression o la chiave di ordinamento includono un prefisso e un oggetto XmlNamespaceManager non viene specificato oppure non è possibile trovare il prefisso nell'oggetto XmlNamespaceManager indicato.

Esempio

Nell'esempio seguente viene illustrato come ordinare i 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);
                    }
                }
            }
        }
    }
}

Nell'esempio il file books.xml viene considerato 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'ordine della chiave di ordinamento.

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

  • Se non XPathExpression 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