XPathExpression.AddSort Metod

Definition

När de åsidosätts i en härledd klass sorterar de noder som valts av XPath-uttrycket.

Överlagringar

Name Description
AddSort(Object, IComparer)

När de åsidosätts i en härledd klass sorterar de noder som valts av XPath-uttrycket enligt det angivna IComparer objektet.

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

När de åsidosätts i en härledd klass sorterar de noder som valts av XPath-uttrycket enligt de angivna parametrarna.

AddSort(Object, IComparer)

Källa:
XPathExpr.cs
Källa:
XPathExpr.cs
Källa:
XPathExpr.cs
Källa:
XPathExpr.cs
Källa:
XPathExpr.cs

När de åsidosätts i en härledd klass sorterar de noder som valts av XPath-uttrycket enligt det angivna IComparer objektet.

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)

Parametrar

expr
Object

Ett objekt som representerar sorteringsnyckeln. Detta kan vara värdet för string noden eller ett XPathExpression objekt med ett kompilerat XPath-uttryck.

comparer
IComparer

Ett IComparer objekt som ger den specifika datatypjämförelserna för att jämföra två objekt för likvärdighet.

Undantag

Sorteringsnyckeln XPathExpression eller innehåller ett prefix och antingen XmlNamespaceManager anges inget eller så går det inte att hitta prefixet i den angivna XmlNamespaceManager.

Kommentarer

Metoden AddSort gör det möjligt för användare att sortera objekt efter datatyp i stället för efter sträng eller nummer. Objektet IComparer tillhandahåller en implementering av metoden Compare som stöder sortering på användardefinierade klasser.

I följande exempel sorteras böckerna efter ISBN-nummer, där isbn är ett objekt som implementerar IComparer gränssnittet.

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

Följande är viktiga att tänka på när du använder AddSort metoden.

  • Ordningen i vilken sorteringarna läggs till ger sorteringsnyckelordningen.

  • Om sorteringsnyckeln XPathExpression eller kräver namnområdesmatchning måste du använda SetContext metoden för att ange en XmlNamespaceManager namnområdesmatchning.

  • XPathExpression Om inte innehåller ett prefix antas det att namnområdets enhetliga resursidentifierare (URI) är det tomma namnområdet. Om xml-koden innehåller ett standardnamnområde måste du fortfarande använda SetContext metoden och ange ett XmlNamespaceManager som innehåller ett prefix och en namnområdes-URI för att hantera standardnamnområdet.

Se även

Gäller för

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

Källa:
XPathExpr.cs
Källa:
XPathExpr.cs
Källa:
XPathExpr.cs
Källa:
XPathExpr.cs
Källa:
XPathExpr.cs

När de åsidosätts i en härledd klass sorterar de noder som valts av XPath-uttrycket enligt de angivna parametrarna.

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)

Parametrar

expr
Object

Ett objekt som representerar sorteringsnyckeln. Detta kan vara värdet för string noden eller ett XPathExpression objekt med ett kompilerat XPath-uttryck.

order
XmlSortOrder

Ett XmlSortOrder värde som anger sorteringsordningen.

caseOrder
XmlCaseOrder

Ett XmlCaseOrder värde som anger hur du sorterar versaler och gemener.

lang
String

Språket som ska användas för jämförelse. Använder klassen CultureInfo som kan skickas till Compare metoden för språktyperna, till exempel "us-en" för amerikansk engelska. Om en tom sträng anges används systemmiljön för att fastställa CultureInfo.

dataType
XmlDataType

Ett XmlDataType värde som anger sorteringsordningen för datatypen.

Undantag

Sorteringsnyckeln XPathExpression eller innehåller ett prefix och antingen XmlNamespaceManager anges inget eller så går det inte att hitta prefixet i den angivna XmlNamespaceManager.

Exempel

I följande exempel visas hur du sorterar bokdokumentet efter pris i fallande ordning.

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

Exemplet tar books.xml-filen som indata.

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

Kommentarer

  • Ordningen i vilken sorteringarna läggs till ger sorteringsnyckelordningen.

  • Om sorteringsnyckeln XPathExpression eller kräver namnområdesmatchning måste du använda SetContext metoden för att ange en XmlNamespaceManager namnområdesmatchning.

  • XPathExpression Om inte innehåller ett prefix antas det att namnområdets enhetliga resursidentifierare (URI) är det tomma namnområdet. Om xml-koden innehåller ett standardnamnområde måste du fortfarande använda SetContext metoden och ange ett XmlNamespaceManager som innehåller ett prefix och en namnområdes-URI för att hantera standardnamnområdet.

Se även

Gäller för