XPathExpression.AddSort Método

Definición

Cuando se reemplaza en una clase derivada, ordena los nodos seleccionados por la expresión XPath.

Sobrecargas

AddSort(Object, IComparer)

Cuando se reemplaza en una clase derivada, ordena los nodos seleccionados por la expresión XPath según el objeto IComparer especificado.

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

Cuando se reemplaza en una clase derivada, ordena los nodos seleccionados por la expresión XPath según los parámetros proporcionados.

AddSort(Object, IComparer)

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

Cuando se reemplaza en una clase derivada, ordena los nodos seleccionados por la expresión XPath según el 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

Objeto que representa el criterio de ordenación. Puede ser el valor string del nodo o un objeto XPathExpression con una expresión XPath compilada.

comparer
IComparer

Un objeto IComparer que proporciona las comparaciones de tipo de datos específicas para comprobar si dos objetos son equivalentes.

Excepciones

La XPathExpression o el criterio de ordenación incluye un prefijo, y o bien no se proporciona un XmlNamespaceManager, o bien el prefijo no se encuentra en el XmlNamespaceManager suministrado.

Comentarios

El AddSort método permite a los usuarios ordenar objetos por su tipo de datos en lugar de por cadena o número. El IComparer objeto proporciona una implementación del método que admite la ordenación en clases definidas por el Compare usuario.

En el ejemplo siguiente, los libros se ordenan por número ISBN, donde isbn es un objeto que implementa la IComparer interfaz.

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

A continuación se muestran notas importantes que se deben tener en cuenta al usar el AddSort método .

  • El orden en el que se agregan las ordenaciones proporciona el criterio de la clave de ordenación.

  • Si la XPathExpression clave de ordenación o requiere resolución de espacio de nombres, debe usar el SetContext método para proporcionar un XmlNamespaceManager para la resolución del espacio de nombres.

  • XPathExpression Si no incluye un prefijo, se supone que el identificador uniforme de recursos (URI) del espacio de nombres es el espacio de nombres vacío. Si el XML incluye un espacio de nombres predeterminado, debe seguir usando el SetContext método y proporcionar un XmlNamespaceManager que contenga un URI de prefijo y espacio de nombres para controlar el espacio de nombres predeterminado.

Consulte también

Se aplica a

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

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

Cuando se reemplaza en una clase derivada, ordena los nodos seleccionados por la expresión XPath según los parámetros proporcionados.

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

Objeto que representa el criterio de ordenación. Puede ser el valor string del nodo o un objeto XPathExpression con una expresión XPath compilada.

order
XmlSortOrder

Valor XmlSortOrder que indica el criterio de ordenación.

caseOrder
XmlCaseOrder

Valor XmlCaseOrder que indica cómo se ordenan las mayúsculas y las minúsculas.

lang
String

Idioma que se va a usar para la comparación. Usa la clase CultureInfo que se puede pasar al método Compare para los tipos de idioma; por ejemplo, "es-es" para español de España. Si se especifica una cadena vacía, se usa el entorno del sistema para determinar la CultureInfo.

dataType
XmlDataType

Valor XmlDataType que indica el criterio de ordenación del tipo de datos.

Excepciones

La XPathExpression o el criterio de ordenación incluye un prefijo, y o bien no se proporciona un XmlNamespaceManager, o bien el prefijo no se encuentra en el XmlNamespaceManager suministrado.

Ejemplos

En el ejemplo siguiente se muestra cómo ordenar el documento de libros por precio en orden descendente.

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

En el ejemplo se toma como entrada el archivo books.xml.

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

Comentarios

  • El orden en el que se agregan las ordenaciones proporciona el criterio de la clave de ordenación.

  • Si la XPathExpression clave de ordenación o requiere resolución de espacio de nombres, debe usar el SetContext método para proporcionar un XmlNamespaceManager para la resolución del espacio de nombres.

  • XPathExpression Si no incluye un prefijo, se supone que el identificador uniforme de recursos (URI) del espacio de nombres es el espacio de nombres vacío. Si el XML incluye un espacio de nombres predeterminado, debe seguir usando el SetContext método y proporcionar un XmlNamespaceManager que contenga un URI de prefijo y espacio de nombres para controlar el espacio de nombres predeterminado.

Consulte también

Se aplica a