XPathExpression.AddSort Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
При переопределении в производном классе сортирует узлы, выбранные выражением XPath.
Перегрузки
| Имя | Описание |
|---|---|
| AddSort(Object, IComparer) |
При переопределении в производном классе сортирует узлы, выбранные выражением XPath, в соответствии с указанным IComparer объектом. |
| AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType) |
При переопределении в производном классе сортирует узлы, выбранные выражением XPath, в соответствии с указанными параметрами. |
AddSort(Object, IComparer)
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
При переопределении в производном классе сортирует узлы, выбранные выражением XPath, в соответствии с указанным 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)
Параметры
- expr
- Object
Объект, представляющий ключ сортировки. Это может быть string значение узла или XPathExpression объекта с скомпилированное выражение XPath.
- comparer
- IComparer
Объект IComparer , предоставляющий сравнение конкретных типов данных для сравнения двух объектов для эквивалентности.
Исключения
XPathExpression Ключ сортировки содержит префикс и XmlNamespaceManager не указан, либо префикс не найден в предоставленном файлеXmlNamespaceManager.
Комментарии
Этот AddSort метод позволяет пользователям сортировать объекты по типу данных вместо строки или числа. Объект IComparer предоставляет реализацию Compare метода, поддерживающего сортировку по определяемым пользователем классам.
В следующем примере книги сортируются по номеру ISBN, где isbn находится объект, реализующий 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);
Ниже приведены важные заметки, которые следует учитывать при использовании AddSort метода.
Порядок добавления сортировки обеспечивает порядок ключей сортировки.
XPathExpression Если для ключа сортировки требуется разрешение пространства имен, необходимо использовать SetContext метод для разрешения XmlNamespaceManager пространства имен.
XPathExpression Если префикс не включает префикс, предполагается, что универсальный код ресурса пространства имен (URI) является пустым пространством имен. Если XML включает пространство имен по умолчанию, необходимо по-прежнему использовать SetContext метод и указать XmlNamespaceManager , который содержит префикс и URI пространства имен для обработки пространства имен по умолчанию.
См. также раздел
Применяется к
AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType)
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
- Исходный код:
- XPathExpr.cs
При переопределении в производном классе сортирует узлы, выбранные выражением XPath, в соответствии с указанными параметрами.
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)
Параметры
- expr
- Object
Объект, представляющий ключ сортировки. Это может быть string значение узла или XPathExpression объекта с скомпилированное выражение XPath.
- order
- XmlSortOrder
Значение XmlSortOrder , указывающее порядок сортировки.
- caseOrder
- XmlCaseOrder
Значение XmlCaseOrder , указывающее, как сортировать прописные и строчные буквы.
- lang
- String
Язык, используемый для сравнения. CultureInfo Использует класс, который можно передать методу Compare для типов языков, например "us-en" для английского языка. Если указана пустая строка, системная среда используется для определения CultureInfo.
- dataType
- XmlDataType
Значение XmlDataType , указывающее порядок сортировки для типа данных.
Исключения
XPathExpression Ключ сортировки содержит префикс и XmlNamespaceManager не указан, либо префикс не найден в предоставленном файлеXmlNamespaceManager.
Примеры
В следующем примере показано, как сортировать документ книг по цене в порядке убывания.
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);
}
}
}
}
}
}
Пример принимает файл 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>
Комментарии
Порядок добавления сортировки обеспечивает порядок ключей сортировки.
XPathExpression Если для ключа сортировки требуется разрешение пространства имен, необходимо использовать SetContext метод для разрешения XmlNamespaceManager пространства имен.
XPathExpression Если префикс не включает префикс, предполагается, что универсальный код ресурса пространства имен (URI) является пустым пространством имен. Если XML включает пространство имен по умолчанию, необходимо по-прежнему использовать SetContext метод и указать XmlNamespaceManager , который содержит префикс и URI пространства имен для обработки пространства имен по умолчанию.
См. также раздел
- XmlSortOrder
- XmlCaseOrder
- XmlDataType
- XmlNamespaceManager
- CultureInfo
- Compare
- SetContext(XmlNamespaceManager)