Sdílet prostřednictvím


XPathExpression.AddSort Metoda

Definice

Při přepsání v odvozené třídě seřadí uzly vybrané výrazem XPath.

Přetížení

AddSort(Object, IComparer)

Při přepsání v odvozené třídě seřadí uzly vybrané výrazem XPath podle zadaného IComparer objektu.

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

Při přepsání v odvozené třídě seřadí uzly vybrané výrazem XPath podle zadaných parametrů.

AddSort(Object, IComparer)

Při přepsání v odvozené třídě seřadí uzly vybrané výrazem XPath podle zadaného IComparer objektu.

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)

Parametry

expr
Object

Objekt představující klíč řazení Může se jednat o string hodnotu uzlu nebo XPathExpression objektu s kompilovaným výrazem XPath.

comparer
IComparer

Objekt IComparer , který poskytuje porovnání konkrétního datového typu pro porovnání dvou objektů pro ekvivalenci.

Výjimky

Klíč XPathExpression řazení obsahuje předponu a buď XmlNamespaceManager není zadána, nebo předponu nelze nalézt v zadaném souboru XmlNamespaceManager.

Poznámky

Metoda AddSort umožňuje uživatelům řadit objekty podle jejich datového typu místo řetězce nebo čísla. Objekt IComparer poskytuje implementaci metody, která podporuje řazení u uživatelem definovaných Compare tříd.

V následujícím příkladu jsou knihy seřazené podle čísla ISBN, kde isbn je objekt, který implementuje IComparer rozhraní.

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

Při používání AddSort metody je potřeba vzít v úvahu následující důležité poznámky.

  • Pořadí, ve kterém se řazení přidá, poskytuje pořadí klíčů řazení.

  • XPathExpression Pokud klíč řazení vyžaduje překlad oboru názvů, musíte použít metodu SetContext XmlNamespaceManager k zadání rozlišení oboru názvů.

  • XPathExpression Pokud neobsahuje předponu, předpokládá se, že obor názvů Uniform Resource Identifier (URI) je prázdný obor názvů. Pokud váš XML obsahuje výchozí obor názvů, musíte použít metodu SetContext a zadat XmlNamespaceManager , která obsahuje předponu a identifikátor URI oboru názvů pro zpracování výchozího oboru názvů.

Viz také

Platí pro

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

Při přepsání v odvozené třídě seřadí uzly vybrané výrazem XPath podle zadaných parametrů.

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)

Parametry

expr
Object

Objekt představující klíč řazení Může se jednat o string hodnotu uzlu nebo XPathExpression objektu s kompilovaným výrazem XPath.

order
XmlSortOrder

Hodnota XmlSortOrder označující pořadí řazení.

caseOrder
XmlCaseOrder

Hodnota XmlCaseOrder označující, jak řadit velká a malá písmena.

lang
String

Jazyk, který se má použít k porovnání. CultureInfo Používá třídu, která se dá předat Compare metodě pro typy jazyků, například "us-en" pro angličtinu USA. Pokud je zadán prázdný řetězec, použije se systémové prostředí k určení CultureInfo.

dataType
XmlDataType

Hodnota XmlDataType označující pořadí řazení pro datový typ.

Výjimky

Klíč XPathExpression řazení obsahuje předponu a buď XmlNamespaceManager není zadána, nebo předponu nelze nalézt v zadaném souboru XmlNamespaceManager.

Příklady

Následující příklad ukazuje, jak seřadit knihy dokument podle ceny v sestupném pořadí.

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

Příklad vezme books.xml soubor jako vstup.

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

Poznámky

  • Pořadí, ve kterém se řazení přidá, poskytuje pořadí klíčů řazení.

  • XPathExpression Pokud klíč řazení vyžaduje překlad oboru názvů, musíte použít metodu SetContext XmlNamespaceManager k zadání rozlišení oboru názvů.

  • XPathExpression Pokud neobsahuje předponu, předpokládá se, že obor názvů Uniform Resource Identifier (URI) je prázdný obor názvů. Pokud váš XML obsahuje výchozí obor názvů, musíte použít metodu SetContext a zadat XmlNamespaceManager , která obsahuje předponu a identifikátor URI oboru názvů pro zpracování výchozího oboru názvů.

Viz také

Platí pro