XPathExpression.AddSort Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
- XmlSortOrder
- XmlCaseOrder
- XmlDataType
- XmlNamespaceManager
- CultureInfo
- Compare
- SetContext(XmlNamespaceManager)