XPathExpression.AddSort Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
- XmlSortOrder
- XmlCaseOrder
- XmlDataType
- XmlNamespaceManager
- CultureInfo
- Compare
- SetContext(XmlNamespaceManager)