XPathExpression.AddSort Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ż
- XmlSortOrder
- XmlCaseOrder
- XmlDataType
- XmlNamespaceManager
- CultureInfo
- Compare
- SetContext(XmlNamespaceManager)