XPathExpression.AddSort Método

Definição

Quando substituído em uma classe derivada, classifica os nós selecionados pela expressão XPath.

Sobrecargas

AddSort(Object, IComparer)

Quando substituído em uma classe derivada, classifica os nós selecionados pela expressão XPath de acordo com o objeto IComparer especificado.

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

Quando substituído em uma classe derivada, classifica os nós selecionados pela expressão XPath de acordo com os parâmetros fornecidos.

AddSort(Object, IComparer)

Quando substituído em uma classe derivada, classifica os nós selecionados pela expressão XPath de acordo com o objeto IComparer especificado.

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)

Parâmetros

expr
Object

Um objeto que representa a chave de classificação. Isso pode ser o valor string do nó ou um objeto XPathExpression com uma expressão XPath compilada.

comparer
IComparer

Um objeto IComparer que fornece as comparações de tipo de dados específico para comparar dois objetos quanto à equivalência.

Exceções

O XPathExpression ou a chave de classificação inclui um prefixo e um XmlNamespaceManager não é fornecido ou o prefixo não pode ser encontrado no XmlNamespaceManager fornecido.

Comentários

O AddSort método permite que os usuários classifiquem objetos por seu tipo de dados em vez de por cadeia de caracteres ou número. O IComparer objeto fornece uma implementação do método que dá suporte à Compare classificação em classes definidas pelo usuário.

No exemplo a seguir, os livros são classificados pelo número ISBN, onde isbn é um objeto que implementa a IComparer interface.

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

Veja a seguir notas importantes a serem consideradas ao usar o AddSort método.

  • A ordem na qual as classificações são adicionadas fornece a ordem de chave de classificação.

  • Se a XPathExpression chave de classificação ou a chave de classificação exigir resolução de namespace, você deverá usar o SetContext método para fornecer uma XmlNamespaceManager resolução de namespace.

  • Se não XPathExpression incluir um prefixo, supõe-se que o URI (Uniform Resource Identifier) do namespace seja o namespace vazio. Se seu XML incluir um namespace padrão, você ainda deverá usar o SetContext método e fornecer um XmlNamespaceManager que contenha um URI de prefixo e namespace para manipular o namespace padrão.

Confira também

Aplica-se a

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

Quando substituído em uma classe derivada, classifica os nós selecionados pela expressão XPath de acordo com os parâmetros fornecidos.

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)

Parâmetros

expr
Object

Um objeto que representa a chave de classificação. Isso pode ser o valor string do nó ou um objeto XPathExpression com uma expressão XPath compilada.

order
XmlSortOrder

Um valor XmlSortOrder que indica a ordem de classificação.

caseOrder
XmlCaseOrder

Um valor XmlCaseOrder que indica como classificar letras maiúsculas e minúsculas.

lang
String

O idioma a ser usado para comparação. Usa a classe CultureInfo que pode ser passada para o método Compare para os tipos de idioma, por exemplo, “us-en” para inglês dos EUA. Se uma cadeia de caracteres vazia for especificada, o ambiente do sistema será usado para determinar a CultureInfo.

dataType
XmlDataType

Um valor XmlDataType que indica a ordem de classificação para o tipo de dados.

Exceções

O XPathExpression ou a chave de classificação inclui um prefixo e um XmlNamespaceManager não é fornecido ou o prefixo não pode ser encontrado no XmlNamespaceManager fornecido.

Exemplos

O exemplo a seguir mostra como classificar o documento de livros por preço em ordem 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);
                    }
                }
            }
        }
    }
}

O exemplo usa o arquivo books.xml como entrada.

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

Comentários

  • A ordem na qual as classificações são adicionadas fornece a ordem de chave de classificação.

  • Se a XPathExpression chave de classificação ou a chave de classificação exigir resolução de namespace, você deverá usar o SetContext método para fornecer uma XmlNamespaceManager resolução de namespace.

  • Se não XPathExpression incluir um prefixo, supõe-se que o URI (Uniform Resource Identifier) do namespace seja o namespace vazio. Se seu XML incluir um namespace padrão, você ainda deverá usar o SetContext método e fornecer um XmlNamespaceManager que contenha um URI de prefixo e namespace para manipular o namespace padrão.

Confira também

Aplica-se a