XPathExpression.AddSort Método

Definição

Quando sobrescrito numa classe derivada, ordena os nós selecionados pela expressão XPath.

Sobrecargas

Name Description
AddSort(Object, IComparer)

Quando sobrescrito numa classe derivada, ordena os nós selecionados pela expressão XPath de acordo com o objeto especificado IComparer .

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

Quando sobrescrito numa classe derivada, ordena os nós selecionados pela expressão XPath de acordo com os parâmetros fornecidos.

AddSort(Object, IComparer)

Quando sobrescrito numa classe derivada, ordena os nós selecionados pela expressão XPath de acordo com o objeto especificado 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)

Parâmetros

expr
Object

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

comparer
IComparer

Um IComparer objeto que fornece as comparações específicas de tipos de dados para comparar dois objetos para equivalência.

Exceções

A XPathExpression chave de ordenação ou inclui um prefixo e ou um XmlNamespaceManager não é fornecido, ou o prefixo não pode ser encontrado no prefixo fornecido XmlNamespaceManager.

Observações

O AddSort método permite aos utilizadores ordenar objetos pelo seu tipo de dados em vez de por cadeia ou número. O IComparer objeto fornece uma implementação do Compare método que suporta a ordenação em classes definidas pelo utilizador.

No exemplo seguinte, os livros estão ordenados por 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);

Seguem-se as notas importantes a considerar ao utilizar o AddSort método.

  • A ordem em que as ordenações são adicionadas fornece a ordem das chaves de ordenação.

  • Se a XPathExpression ou a chave de ordenação exigir resolução no espaço de nomes, deve usar o SetContext método para fornecer uma XmlNamespaceManager resolução de espaço de nomes.

  • Se não XPathExpression incluir um prefixo, assume-se que o namespace Uniform Resource Identifier (URI) é o namespace vazio. Se o seu XML incluir um namespace por defeito, deve continuar a usar o SetContext método e fornecer um XmlNamespaceManager que contenha um prefixo e um URI de namespace para gerir o namespace por defeito.

Ver também

Aplica-se a

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

Quando sobrescrito numa classe derivada, ordena 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 ordenação. Este pode ser o string valor do nó ou de um XPathExpression objeto com uma expressão XPath compilada.

order
XmlSortOrder

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

caseOrder
XmlCaseOrder

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

lang
String

A linguagem a usar para comparação. Utiliza a CultureInfo classe que pode ser passada ao Compare método para os tipos de língua, por exemplo, "us-en" para inglês dos EUA. Se uma cadeia vazia for especificada, o ambiente do sistema é usado para determinar o CultureInfo.

dataType
XmlDataType

Um valor que XmlDataType indica a ordem de ordenação do tipo de dado.

Exceções

A XPathExpression chave de ordenação ou inclui um prefixo e ou um XmlNamespaceManager não é fornecido, ou o prefixo não pode ser encontrado no prefixo fornecido XmlNamespaceManager.

Exemplos

O exemplo seguinte mostra como ordenar o documento dos 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>

Observações

  • A ordem em que as ordenações são adicionadas fornece a ordem das chaves de ordenação.

  • Se a XPathExpression ou a chave de ordenação exigir resolução no espaço de nomes, deve usar o SetContext método para fornecer uma XmlNamespaceManager resolução de espaço de nomes.

  • Se não XPathExpression incluir um prefixo, assume-se que o namespace Uniform Resource Identifier (URI) é o namespace vazio. Se o seu XML incluir um namespace por defeito, deve continuar a usar o SetContext método e fornecer um XmlNamespaceManager que contenha um prefixo e um URI de namespace para gerir o namespace por defeito.

Ver também

Aplica-se a