Udostępnij za pośrednictwem


XPathExpression.AddSort Metoda

Definicja

Po przesłonięcia w klasie pochodnej posortuje węzły wybrane przez wyrażenie XPath.

Przeciążenia

AddSort(Object, IComparer)

Po zastąpieniu w klasie pochodnej węzły wybrane przez wyrażenie XPath są sortowane zgodnie z określonym IComparer obiektem.

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

Po zastąpieniu w klasie pochodnej węzły wybrane przez wyrażenie XPath są sortowane zgodnie z podanymi parametrami.

AddSort(Object, IComparer)

Źródło:
XPathExpr.cs
Źródło:
XPathExpr.cs
Źródło:
XPathExpr.cs

Po zastąpieniu w klasie pochodnej węzły wybrane przez wyrażenie XPath są sortowane zgodnie z określonym IComparer obiektem.

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

Obiekt reprezentujący klucz sortowania. Może to być string wartość węzła lub XPathExpression obiektu z skompilowanym wyrażeniem XPath.

comparer
IComparer

IComparer Obiekt, który zawiera porównanie określonego typu danych do porównywania dwóch obiektów dla równoważności.

Wyjątki

Klucz sortowania XPathExpression lub zawiera prefiks i nie XmlNamespaceManager jest podany lub nie można odnaleźć prefiksu w podanym elememencie XmlNamespaceManager.

Uwagi

Metoda AddSort umożliwia użytkownikom sortowanie obiektów według typu danych zamiast według ciągu lub liczby. Obiekt IComparer zapewnia implementację metody obsługującej Compare sortowanie klas zdefiniowanych przez użytkownika.

W poniższym przykładzie książki są sortowane według numeru ISBN, gdzie isbn jest obiektem implementujący IComparer interfejs.

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

Poniżej przedstawiono ważne uwagi, które należy wziąć pod uwagę podczas korzystania z AddSort metody .

  • Kolejność dodawania sortowania zapewnia kolejność klucza sortowania.

  • XPathExpression Jeśli klucz sortowania lub wymaga rozpoznawania przestrzeni nazw, należy użyć SetContext metody w celu zapewnienia XmlNamespaceManager rozpoznawania przestrzeni nazw.

  • Jeśli element XPathExpression nie zawiera prefiksu, zakłada się, że przestrzeń nazw Uniform Resource Identifier (URI) jest pustą przestrzenią nazw. Jeśli kod XML zawiera domyślną przestrzeń nazw, nadal musisz użyć SetContext metody i podać XmlNamespaceManager prefiks i identyfikator URI przestrzeni nazw, aby obsłużyć domyślną przestrzeń nazw.

Zobacz też

Dotyczy

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

Źródło:
XPathExpr.cs
Źródło:
XPathExpr.cs
Źródło:
XPathExpr.cs

Po zastąpieniu w klasie pochodnej węzły wybrane przez wyrażenie XPath są sortowane zgodnie z podanymi parametrami.

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

Obiekt reprezentujący klucz sortowania. Może to być string wartość węzła lub XPathExpression obiektu z skompilowanym wyrażeniem XPath.

order
XmlSortOrder

Wartość wskazująca XmlSortOrder kolejność sortowania.

caseOrder
XmlCaseOrder

Wartość wskazująca XmlCaseOrder sposób sortowania wielkich i małych liter.

lang
String

Język, który ma być używany do porównania. CultureInfo Używa klasy, która może zostać przekazana do Compare metody dla typów języków, na przykład "us-en" dla języka angielskiego w Stanach Zjednoczonych. Jeśli określono pusty ciąg, środowisko systemowe jest używane do określania CultureInfowartości .

dataType
XmlDataType

Wartość XmlDataType wskazująca kolejność sortowania dla typu danych.

Wyjątki

Klucz sortowania XPathExpression lub zawiera prefiks i nie XmlNamespaceManager jest podany lub nie można odnaleźć prefiksu w podanym elememencie XmlNamespaceManager.

Przykłady

W poniższym przykładzie pokazano, jak posortować dokument książki według ceny w kolejności malejącej.

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

W przykładzie plik jest pobierany books.xml jako dane wejściowe.

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

Uwagi

  • Kolejność dodawania sortowania zapewnia kolejność klucza sortowania.

  • XPathExpression Jeśli klucz sortowania lub wymaga rozpoznawania przestrzeni nazw, należy użyć SetContext metody w celu zapewnienia XmlNamespaceManager rozpoznawania przestrzeni nazw.

  • Jeśli element XPathExpression nie zawiera prefiksu, zakłada się, że przestrzeń nazw Uniform Resource Identifier (URI) jest pustą przestrzenią nazw. Jeśli kod XML zawiera domyślną przestrzeń nazw, nadal musisz użyć SetContext metody i podać XmlNamespaceManager prefiks i identyfikator URI przestrzeni nazw, aby obsłużyć domyślną przestrzeń nazw.

Zobacz też

Dotyczy