XPathExpression.SetContext Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Türetilmiş bir sınıfta geçersiz kılındığında, ad alanı çözümlemesi IXmlNamespaceResolver için kullanılacak nesneyi belirtir.
Aşırı Yüklemeler
SetContext(IXmlNamespaceResolver) |
Türetilmiş bir sınıfta geçersiz kılındığında, ad alanı çözümlemesi IXmlNamespaceResolver için kullanılacak nesneyi belirtir. |
SetContext(XmlNamespaceManager) |
Türetilmiş bir sınıfta geçersiz kılındığında, ad alanı çözümlemesi XmlNamespaceManager için kullanılacak nesneyi belirtir. |
SetContext(IXmlNamespaceResolver)
- Kaynak:
- XPathExpr.cs
- Kaynak:
- XPathExpr.cs
- Kaynak:
- XPathExpr.cs
Türetilmiş bir sınıfta geçersiz kılındığında, ad alanı çözümlemesi IXmlNamespaceResolver için kullanılacak nesneyi belirtir.
public:
abstract void SetContext(System::Xml::IXmlNamespaceResolver ^ nsResolver);
public abstract void SetContext (System.Xml.IXmlNamespaceResolver? nsResolver);
public abstract void SetContext (System.Xml.IXmlNamespaceResolver nsResolver);
abstract member SetContext : System.Xml.IXmlNamespaceResolver -> unit
Public MustOverride Sub SetContext (nsResolver As IXmlNamespaceResolver)
Parametreler
- nsResolver
- IXmlNamespaceResolver
Ad alanı çözümlemesi IXmlNamespaceResolver için kullanılacak arabirimi uygulayan nesne.
Özel durumlar
IXmlNamespaceResolver nesne parametresi öğesinden IXmlNamespaceResolvertüretilmemiştir.
Örnekler
Aşağıdaki örnekte, XPath ifadesinin nasıl işleneceğini belirlemek için XPath dönüş türünün nasıl kullanılacağı ve ad alanı çözümlemesi için bir XmlNamespaceManager nesne sağlamak için yönteminin SetContext nasıl kullanılacağı gösterilmektedir.
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
Örnek, dosyayı giriş olarak alır contosoBooks.xml
.
<?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>
Açıklamalar
Ad alanı çözümlemesi, sınıfı gibi arabirimi uygulayan IXmlNamespaceResolver sınıflar XmlNamespaceManager kullanılarak desteklenir. Ön XmlNamespaceManager ek ve ad alanı Tekdüzen Kaynak Tanımlayıcısı (URI) eşlemelerini depolar. ad alanı çözümlemesi XPathExpression gerektiriyorsa, ön ek ve ad alanı URI çifti arabirimi uygulayan IXmlNamespaceResolver sınıfı gibi XmlNamespaceManager bir nesneye eklenmelidir ve SetContext ad alanı çözümlemesi için kullanılacak arabirim nesnesini belirtmek IXmlNamespaceResolver için yöntemi çağrılmalıdır.
Yöntemi kullanılırken SetContext dikkate alınması gereken önemli notlar aşağıdadır.
XPathExpression ön ek içermiyorsa, ad alanı URI'sinin boş ad alanı olduğu varsayılır. XML'niz varsayılan bir ad alanı içeriyorsa, yine de yöntemini kullanmanız SetContext ve varsayılan ad alanını işlemek için ön ek ve ad alanı URI'sini içeren bir nesne sağlamanız gerekir.
Ayrıca, nesnenizi oluştururken yöntemine ad alanı çözümlemesi Compile için bir IXmlNamespaceResolver arabirim nesnesi de sağlayabilirsinizXPathExpression.
SetContextbir ad alanı çözümleyicisi olarak kabul ederXsltContext, böylece özel bir bağlam uygulayabilir ve ve IXsltContextVariabletabanlı IXsltContextFunction işlevleri ve değişkenleri kullanabilirsiniz. XPath ifadesi bunları yürütür. Daha fazla bilgi için bkz. Kullanıcı Tanımlı İşlevler ve Değişkenler.
Ayrıca bkz.
- SetContext(XmlNamespaceManager)
- IXmlNamespaceResolver
- Compile(String, IXmlNamespaceResolver)
- Kullanıcı Tanımlı İşlevler ve Değişkenler
Şunlara uygulanır
SetContext(XmlNamespaceManager)
- Kaynak:
- XPathExpr.cs
- Kaynak:
- XPathExpr.cs
- Kaynak:
- XPathExpr.cs
Türetilmiş bir sınıfta geçersiz kılındığında, ad alanı çözümlemesi XmlNamespaceManager için kullanılacak nesneyi belirtir.
public:
abstract void SetContext(System::Xml::XmlNamespaceManager ^ nsManager);
public abstract void SetContext (System.Xml.XmlNamespaceManager nsManager);
abstract member SetContext : System.Xml.XmlNamespaceManager -> unit
Public MustOverride Sub SetContext (nsManager As XmlNamespaceManager)
Parametreler
- nsManager
- XmlNamespaceManager
XmlNamespaceManager Ad alanı çözümlemesi için kullanılacak nesne.
Özel durumlar
XmlNamespaceManager nesne parametresi sınıfından XmlNamespaceManager türetilmemiştir.
Örnekler
Aşağıdaki örnekte, XPath ifadesinin nasıl işleneceğini belirlemek için XPath dönüş türünün nasıl kullanılacağı ve ad alanı çözümlemesi için bir XmlNamespaceManager nesne sağlamak için yönteminin SetContext nasıl kullanılacağı gösterilmektedir.
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
Örnek, dosyayı giriş olarak alır contosoBooks.xml
.
<?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>
Açıklamalar
Ad alanı çözümlemesi, ön ek ve ad alanı Tekdüzen Kaynak Tanımlayıcısı (URI) eşlemelerini depolayan sınıfı kullanılarak XmlNamespaceManager desteklenir. ad alanı çözümlemesi XPathExpression gerektiriyorsa, nesneye XmlNamespaceManager ön ek ve ad alanı URI çifti eklenmelidir ve SetContext ad alanı çözümlemesi için kullanılacak nesneyi belirtmek XmlNamespaceManager için yöntemi çağrılmalıdır.
Yöntemi kullanılırken SetContext dikkate alınması gereken önemli notlar aşağıdadır.
XPathExpression ön ek içermiyorsa, ad alanı URI'sinin boş ad alanı olduğu varsayılır. XML'niz varsayılan bir ad alanı içeriyorsa, yine de yöntemini kullanmanız SetContext ve varsayılan ad alanını işlemek için ön ek ve ad alanı URI'sini içeren bir nesne sağlamanız XmlNamespaceManager gerekir.
Ayrıca, nesnenizi oluştururken yöntemine ad alanı çözümlemesi için bir IXmlNamespaceResolver nesne de sağlayabilirsinizXPathExpression.Compile
SetContextbir ad alanı çözümleyicisi olarak kabul ederXsltContext, böylece özel bir bağlam uygulayabilir ve ve IXsltContextVariabletabanlı IXsltContextFunction işlevleri ve değişkenleri kullanabilirsiniz. XPath ifadesi bunları yürütür. Daha fazla bilgi için bkz. Kullanıcı Tanımlı İşlevler ve Değişkenler.
Ayrıca bkz.
- XmlNamespaceManager
- SetContext(IXmlNamespaceResolver)
- IXmlNamespaceResolver
- Compile(String, IXmlNamespaceResolver)
- Kullanıcı Tanımlı İşlevler ve Değişkenler