XPathExpression.AddSort Méthode

Définition

En cas de substitution dans une classe dérivée, trie les nœuds sélectionnés par l'expression XPath.

Surcharges

AddSort(Object, IComparer)

En cas de substitution dans une classe dérivée, trie les nœuds sélectionnés par l'expression XPath en fonction de l'objet IComparer spécifié.

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

En cas de remplacement dans une classe dérivée, trie les nœuds sélectionnés par l’expression XPath en fonction des paramètres fournis.

AddSort(Object, IComparer)

Source:
XPathExpr.cs
Source:
XPathExpr.cs
Source:
XPathExpr.cs

En cas de substitution dans une classe dérivée, trie les nœuds sélectionnés par l'expression XPath en fonction de l'objet IComparer spécifié.

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)

Paramètres

expr
Object

Objet représentant la clé de tri. Il peut s’agir de la valeur string du nœud ou d’un XPathExpression avec une expression XPath compilée.

comparer
IComparer

Objet IComparer qui fournit les comparaisons de type de données spécifiques pour déterminer si deux objets sont équivalents.

Exceptions

XPathExpression ou la clé de tri inclut un préfixe et soit un XmlNamespaceManager n’est pas fourni, soit le préfixe est introuvable dans le XmlNamespaceManager fourni.

Remarques

La AddSort méthode permet aux utilisateurs de trier les objets en fonction de leur type de données au lieu de la chaîne ou du nombre. L’objet IComparer fournit une implémentation de la méthode qui prend en charge le Compare tri sur des classes définies par l’utilisateur.

Dans l’exemple suivant, les livres sont triés par numéro ISBN, où isbn est un objet qui implémente l’interface 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);  

Voici les remarques importantes à prendre en compte lors de l’utilisation de la AddSort méthode .

  • L’ordre dans lequel les tris sont ajoutés fournit l’ordre des clés de tri.

  • Si ou la XPathExpression clé de tri nécessite une résolution d’espace de noms, vous devez utiliser la SetContext méthode pour fournir un pour la résolution d’espace XmlNamespaceManager de noms.

  • Si le XPathExpression n’inclut pas de préfixe, il est supposé que l’URI (Uniform Resource Identifier) de l’espace de noms est l’espace de noms vide. Si votre code XML inclut un espace de noms par défaut, vous devez toujours utiliser la SetContext méthode et fournir un qui contient un préfixe et un URI d’espace XmlNamespaceManager de noms pour gérer l’espace de noms par défaut.

Voir aussi

S’applique à

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

Source:
XPathExpr.cs
Source:
XPathExpr.cs
Source:
XPathExpr.cs

En cas de remplacement dans une classe dérivée, trie les nœuds sélectionnés par l’expression XPath en fonction des paramètres fournis.

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)

Paramètres

expr
Object

Objet représentant la clé de tri. Il peut s’agir de la valeur string du nœud ou d’un XPathExpression avec une expression XPath compilée.

order
XmlSortOrder

Valeur XmlSortOrder indiquant l’ordre de tri.

caseOrder
XmlCaseOrder

Valeur XmlCaseOrder indiquant la façon dont les lettres majuscules et minuscules sont triées.

lang
String

Langue à utiliser pour la comparaison. Utilise la classe CultureInfo qui peut être passée à la méthode Compare pour les types de langue, par exemple, « us-en » pour l'anglais des États-Unis. Si une chaîne vide est spécifiée, l’environnement système est utilisé pour déterminer la CultureInfo.

dataType
XmlDataType

Valeur XmlDataType indiquant l’ordre de tri pour le type de données.

Exceptions

XPathExpression ou la clé de tri inclut un préfixe et soit un XmlNamespaceManager n’est pas fourni, soit le préfixe est introuvable dans le XmlNamespaceManager fourni.

Exemples

L’exemple suivant montre comment trier le document de livres par prix dans l’ordre décroissant.

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'exemple prend le fichier books.xml comme entrée.

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

Remarques

  • L’ordre dans lequel les tris sont ajoutés fournit l’ordre des clés de tri.

  • Si ou la XPathExpression clé de tri nécessite une résolution d’espace de noms, vous devez utiliser la SetContext méthode pour fournir un pour la résolution d’espace XmlNamespaceManager de noms.

  • Si le XPathExpression n’inclut pas de préfixe, il est supposé que l’URI (Uniform Resource Identifier) de l’espace de noms est l’espace de noms vide. Si votre code XML inclut un espace de noms par défaut, vous devez toujours utiliser la SetContext méthode et fournir un qui contient un préfixe et un URI d’espace XmlNamespaceManager de noms pour gérer l’espace de noms par défaut.

Voir aussi

S’applique à