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

Nom Description
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 spécifié IComparer .

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

En cas de substitution 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)

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 spécifié 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)

Paramètres

expr
Object

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

comparer
IComparer

Objet IComparer qui fournit les comparaisons de types de données spécifiques pour comparer deux objets à des fins d’équivalence.

Exceptions

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

Remarques

La AddSort méthode permet aux utilisateurs de trier les objets selon leur type de données au lieu d’une chaîne ou d’un nombre. L’objet IComparer fournit une implémentation de la méthode qui prend en charge le Compare tri sur les 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);

Les remarques suivantes sont 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 de clé de tri.

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

  • Si le XPathExpression préfixe 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 XmlNamespaceManager URI contenant un préfixe et un URI d’espace de noms pour gérer l’espace de noms par défaut.

Voir aussi

S’applique à

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

En cas de substitution 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 string valeur du nœud ou d’un XPathExpression objet avec une expression XPath compilée.

order
XmlSortOrder

Valeur XmlSortOrder indiquant l’ordre de tri.

caseOrder
XmlCaseOrder

Valeur XmlCaseOrder indiquant comment trier des majuscules et des lettres minuscules.

lang
String

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

dataType
XmlDataType

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

Exceptions

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

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 de clé de tri.

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

  • Si le XPathExpression préfixe 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 XmlNamespaceManager URI contenant un préfixe et un URI d’espace de noms pour gérer l’espace de noms par défaut.

Voir aussi

S’applique à