XPathExpression Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan kelas yang diketik yang mewakili ekspresi XPath yang dikompilasi.
public ref class XPathExpression abstract
public abstract class XPathExpression
type XPathExpression = class
Public MustInherit Class XPathExpression
- Warisan
-
XPathExpression
Contoh
Contoh berikut menunjukkan cara menggunakan jenis pengembalian XPath untuk menentukan cara memproses ekspresi XPath.
public ref class Sample
{
public:
static void Evaluate( XPathExpression^ expr, XPathNavigator^ nav )
{
XPathNodeIterator^ i = nav->Select(expr);
switch ( expr->ReturnType )
{
case XPathResultType::Number:
Console::WriteLine( nav->Evaluate( expr ) );
break;
case XPathResultType::NodeSet:
while ( i->MoveNext() )
Console::WriteLine( i->Current );
break;
case XPathResultType::Boolean:
if ( *safe_cast<bool^>(nav->Evaluate( expr )) )
Console::WriteLine( "True!" );
break;
case XPathResultType::String:
Console::WriteLine( nav->Evaluate( expr ) );
break;
}
}
};
int main()
{
XPathDocument^ doc = gcnew XPathDocument( "contosoBooks.xml" );
XPathNavigator^ nav = doc->CreateNavigator();
XPathExpression^ expr1 = nav->Compile( ".//price/text()*10" ); // Returns a number.
XPathExpression^ expr2 = nav->Compile( "bookstore/book/price" ); // Returns a nodeset.
Sample^ MySample = gcnew Sample;
MySample->Evaluate( expr1, nav );
MySample->Evaluate( expr2, nav );
}
using System;
using System.Xml;
using System.Xml.XPath;
public class XPathExpressionExample
{
public static void Main()
{
XPathDocument document = new XPathDocument("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathExpression expression1 = XPathExpression.Compile(".//bk:price/text()*10"); // Returns a number.
XPathExpression expression2 = XPathExpression.Compile("bk:bookstore/bk:book/bk:price"); // Returns a nodeset.
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("bk", "http://www.contoso.com/books");
expression1.SetContext(manager);
expression2.SetContext(manager);
Evaluate(expression1, navigator);
Evaluate(expression2, navigator);
}
public static void Evaluate(XPathExpression expression, XPathNavigator navigator)
{
switch (expression.ReturnType)
{
case XPathResultType.Number:
Console.WriteLine(navigator.Evaluate(expression));
break;
case XPathResultType.NodeSet:
XPathNodeIterator nodes = navigator.Select(expression);
while (nodes.MoveNext())
{
Console.WriteLine(nodes.Current.ToString());
}
break;
case XPathResultType.Boolean:
if ((bool)navigator.Evaluate(expression))
Console.WriteLine("True!");
break;
case XPathResultType.String:
Console.WriteLine(navigator.Evaluate(expression));
break;
}
}
}
Imports System.Xml
Imports System.Xml.XPath
Public Class XPathExpressionExample
Public Shared Sub Main()
Dim document As XPathDocument = New XPathDocument("contosoBooks.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim expression1 As XPathExpression = XPathExpression.Compile(".//bk:price/text()*10") ' Returns a number.
Dim expression2 As XPathExpression = XPathExpression.Compile("bk:bookstore/bk:book/bk:price") ' Returns a nodeset.
Dim manager As XmlNamespaceManager = New XmlNamespaceManager(navigator.NameTable)
manager.AddNamespace("bk", "http://www.contoso.com/books")
expression1.SetContext(manager)
expression2.SetContext(manager)
Evaluate(expression1, navigator)
Evaluate(expression2, navigator)
End Sub
Public Shared Sub Evaluate(ByVal expression As XPathExpression, ByVal navigator As XPathNavigator)
Select Case expression.ReturnType
Case XPathResultType.Number
Console.WriteLine(navigator.Evaluate(expression))
Exit Sub
Case XPathResultType.NodeSet
Dim nodes As XPathNodeIterator = navigator.Select(expression)
While nodes.MoveNext()
Console.WriteLine(nodes.Current.ToString())
End While
Case XPathResultType.Boolean
If CType(navigator.Evaluate(expression), Boolean) Then
Console.WriteLine("True!")
End If
Case XPathResultType.String
Console.WriteLine(navigator.Evaluate(expression))
End Select
End Sub
End Class
Contoh mengambil file contosoBooks.xml sebagai input.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<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>
Keterangan
Kelas ini dikembalikan sebagai hasil dari CompileXPathNavigator metode kelas . Ini adalah parameter untuk Evaluatemetode kelas , Matches, Select, dan SelectSingleNodeXPathNavigator .
Catatan Bagi Implementer
Saat mewarisi dari XPathExpression kelas, Anda harus mengambil alih anggota berikut:
Properti
| Nama | Deskripsi |
|---|---|
| Expression |
Ketika ditimpa dalam kelas turunan, mendapatkan |
| ReturnType |
Saat ditimpa di kelas turunan, mendapatkan jenis hasil ekspresi XPath. |
Metode
| Nama | Deskripsi |
|---|---|
| AddSort(Object, IComparer) |
Saat ditimpa dalam kelas turunan, mengurutkan simpul yang dipilih oleh ekspresi XPath sesuai dengan objek yang ditentukan IComparer . |
| AddSort(Object, XmlSortOrder, XmlCaseOrder, String, XmlDataType) |
Saat ditimpa dalam kelas turunan, mengurutkan simpul yang dipilih oleh ekspresi XPath sesuai dengan parameter yang disediakan. |
| Clone() |
Ketika ditimpa dalam kelas turunan, mengembalikan klon ini XPathExpression. |
| Compile(String, IXmlNamespaceResolver) |
Mengkompilasi ekspresi XPath yang ditentukan, dengan IXmlNamespaceResolver objek yang ditentukan untuk resolusi namespace, dan mengembalikan XPathExpression objek yang mewakili ekspresi XPath. |
| Compile(String) |
Mengkompilasi ekspresi XPath yang ditentukan dan mengembalikan objek yang XPathExpression mewakili ekspresi XPath. |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| SetContext(IXmlNamespaceResolver) |
Saat ditimpa dalam kelas turunan, menentukan objek yang IXmlNamespaceResolver akan digunakan untuk resolusi namespace. |
| SetContext(XmlNamespaceManager) |
Saat ditimpa dalam kelas turunan, menentukan objek yang XmlNamespaceManager akan digunakan untuk resolusi namespace. |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |