Aracılığıyla paylaş


XPathExpression.AddSort Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, XPath ifadesi tarafından seçilen düğümleri sıralar.

Aşırı Yüklemeler

AddSort(Object, IComparer)

Türetilmiş bir sınıfta geçersiz kılındığında, XPath ifadesi tarafından seçilen düğümleri belirtilen IComparer nesneye göre sıralar.

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

Türetilmiş bir sınıfta geçersiz kılındığında, XPath ifadesi tarafından seçilen düğümleri sağlanan parametrelere göre sıralar.

AddSort(Object, IComparer)

Türetilmiş bir sınıfta geçersiz kılındığında, XPath ifadesi tarafından seçilen düğümleri belirtilen IComparer nesneye göre sıralar.

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)

Parametreler

expr
Object

Sıralama anahtarını temsil eden bir nesne. Bu, düğümün string veya derlenmiş XPath ifadesine sahip bir XPathExpression nesnenin değeri olabilir.

comparer
IComparer

IComparer Denklik için iki nesneyi karşılaştırmak için belirli veri türü karşılaştırmaları sağlayan bir nesne.

Özel durumlar

XPathExpression veya sıralama anahtarı bir ön ek içerir ve XmlNamespaceManager sağlanmaz veya ön ek sağlanan XmlNamespaceManageriçinde bulunamaz.

Açıklamalar

AddSort yöntemi, kullanıcıların nesneleri dizeye veya sayıya göre değil veri türlerine göre sıralamasına olanak tanır. nesnesi, IComparer kullanıcı tanımlı sınıflarda sıralamayı Compare destekleyen yönteminin bir uygulamasını sağlar.

Aşağıdaki örnekte, kitaplar ISBN numarasına göre sıralanır ve burada isbn arabirimi uygulayan IComparer bir nesnedir.

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

Yöntemi kullanırken dikkate alınması gereken önemli notlar aşağıdadır AddSort .

  • Sıralamaların eklendiği düzen, sıralama anahtarı düzenini sağlar.

  • XPathExpression veya sıralama anahtarı ad alanı çözümlemesi gerektiriyorsa, ad alanı çözümlemesi SetContext için bir XmlNamespaceManager sağlamak için yöntemini kullanmanız gerekir.

  • XPathExpression ön ek içermiyorsa, ad alanı Tekdüzen Kaynak Tanımlayıcısı'nın (URI) boş ad alanı olduğu varsayılır. XML'niz varsayılan bir ad alanı içeriyorsa, yöntemini kullanmaya SetContext devam etmeli ve varsayılan ad alanını işlemek için ön ek ve ad alanı URI'sini içeren bir XmlNamespaceManager ad alanı sağlamanız gerekir.

Ayrıca bkz.

Şunlara uygulanır

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

Türetilmiş bir sınıfta geçersiz kılındığında, XPath ifadesi tarafından seçilen düğümleri sağlanan parametrelere göre sıralar.

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)

Parametreler

expr
Object

Sıralama anahtarını temsil eden bir nesne. Bu, düğümün string veya derlenmiş XPath ifadesine sahip bir XPathExpression nesnenin değeri olabilir.

order
XmlSortOrder

XmlSortOrder Sıralama düzenini gösteren bir değer.

caseOrder
XmlCaseOrder

XmlCaseOrder Büyük ve küçük harflerin nasıl sıralanacağını gösteren değer.

lang
String

Karşılaştırma için kullanılacak dil. CultureInfo Dil türleri için yöntemine Compare geçirilebilen sınıfını kullanır; örneğin, ABD İngilizcesi için "us-en". Boş bir dize belirtilirse, sistem ortamı değerini belirlemek CultureInfoiçin kullanılır.

dataType
XmlDataType

XmlDataType Veri türü için sıralama düzenini gösteren değer.

Özel durumlar

XPathExpression veya sıralama anahtarı bir ön ek içerir ve XmlNamespaceManager sağlanmaz veya ön ek sağlanan XmlNamespaceManageriçinde bulunamaz.

Örnekler

Aşağıdaki örnekte, kitaplar belgesinin fiyata göre azalan düzende nasıl sıralanacağını gösterir.

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

Örnek, dosyayı giriş olarak alır books.xml .

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

Açıklamalar

  • Sıralamaların eklendiği düzen, sıralama anahtarı düzenini sağlar.

  • XPathExpression veya sıralama anahtarı ad alanı çözümlemesi gerektiriyorsa, ad alanı çözümlemesi SetContext için bir XmlNamespaceManager sağlamak için yöntemini kullanmanız gerekir.

  • XPathExpression ön ek içermiyorsa, ad alanı Tekdüzen Kaynak Tanımlayıcısı'nın (URI) boş ad alanı olduğu varsayılır. XML'niz varsayılan bir ad alanı içeriyorsa, yöntemini kullanmaya SetContext devam etmeli ve varsayılan ad alanını işlemek için ön ek ve ad alanı URI'sini içeren bir XmlNamespaceManager ad alanı sağlamanız gerekir.

Ayrıca bkz.

Şunlara uygulanır