XPathExpression.SetContext Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
En cas de remplacement dans une classe dérivée, spécifie l’objet IXmlNamespaceResolver à utiliser pour la résolution d’espace de noms.
Surcharges
SetContext(IXmlNamespaceResolver) |
En cas de remplacement dans une classe dérivée, spécifie l’objet IXmlNamespaceResolver à utiliser pour la résolution d’espace de noms. |
SetContext(XmlNamespaceManager) |
En cas de remplacement dans une classe dérivée, spécifie l’objet XmlNamespaceManager à utiliser pour la résolution d’espace de noms. |
SetContext(IXmlNamespaceResolver)
- Source:
- XPathExpr.cs
- Source:
- XPathExpr.cs
- Source:
- XPathExpr.cs
En cas de remplacement dans une classe dérivée, spécifie l’objet IXmlNamespaceResolver à utiliser pour la résolution d’espace de noms.
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)
Paramètres
- nsResolver
- IXmlNamespaceResolver
Objet qui implémente l’interface IXmlNamespaceResolver à utiliser pour la résolution d’espace de noms.
Exceptions
Le paramètre de l’objet IXmlNamespaceResolver n’est pas dérivé de IXmlNamespaceResolver.
Exemples
L’exemple suivant montre comment utiliser le type de retour XPath pour déterminer comment traiter l’expression XPath et comment utiliser la SetContext méthode pour fournir un objet pour la résolution d’espace XmlNamespaceManager de noms.
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
L'exemple prend le fichier contosoBooks.xml
comme entrée.
<?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>
Remarques
La résolution d’espace de noms est prise en charge à l’aide de classes qui implémentent l’interface IXmlNamespaceResolver , comme la XmlNamespaceManager classe . Le XmlNamespaceManager stocke les mappages URI (Uniform Resource Identifier) de préfixe et d’espace de noms. Si nécessite une XPathExpression résolution d’espace de noms, la paire préfixe et URI d’espace de noms doit être ajoutée à un objet, tel que la XmlNamespaceManager classe , qui implémente l’interface IXmlNamespaceResolver , et la SetContext méthode doit être appelée pour spécifier l’objet d’interface à utiliser pour la IXmlNamespaceResolver résolution d’espace de noms.
Voici les remarques importantes à prendre en compte lors de l’utilisation de la SetContext méthode .
Si le n’inclut XPathExpression pas de préfixe, il est supposé que l’URI de l’espace de noms est l’espace de noms vide. Si votre code XML inclut un espace de noms par défaut, vous devez toujours utiliser la SetContext méthode et fournir un objet qui contient un préfixe et un URI d’espace de noms pour gérer l’espace de noms par défaut.
Vous pouvez également fournir un objet d’interface IXmlNamespaceResolver pour la résolution d’espace de noms à la Compile méthode lorsque vous créez votre XPathExpression objet.
SetContext accepte XsltContext en tant que programme de résolution d’espace de noms, ce qui vous permet d’implémenter un contexte personnalisé et d’utiliser des fonctions et des variables basées sur IXsltContextFunction et IXsltContextVariable. L’expression XPath les exécute. Pour plus d’informations, consultez Fonctions et variables définies par l’utilisateur.
Voir aussi
- SetContext(XmlNamespaceManager)
- IXmlNamespaceResolver
- Compile(String, IXmlNamespaceResolver)
- Fonctions et variables définies par l'utilisateur
S’applique à
SetContext(XmlNamespaceManager)
- Source:
- XPathExpr.cs
- Source:
- XPathExpr.cs
- Source:
- XPathExpr.cs
En cas de remplacement dans une classe dérivée, spécifie l’objet XmlNamespaceManager à utiliser pour la résolution d’espace de noms.
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)
Paramètres
- nsManager
- XmlNamespaceManager
Objet XmlNamespaceManager à utiliser pour la résolution d’espace de noms.
Exceptions
Le paramètre de l’objet XmlNamespaceManager n’est pas dérivé de la classe XmlNamespaceManager.
Exemples
L’exemple suivant montre comment utiliser le type de retour XPath pour déterminer comment traiter l’expression XPath et comment utiliser la SetContext méthode pour fournir un objet pour la résolution d’espace XmlNamespaceManager de noms.
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
L'exemple prend le fichier contosoBooks.xml
comme entrée.
<?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>
Remarques
La résolution d’espace de noms est prise en charge à l’aide de la XmlNamespaceManager classe qui stocke les mappages de préfixe et d’URI (Uniform Resource Identifier). Si nécessite une résolution d’espace de noms, le préfixe et la XPathExpression paire URI d’espace de noms doivent être ajoutés à l’objet XmlNamespaceManager et la SetContext méthode doit être appelée pour spécifier l’objet à utiliser pour la XmlNamespaceManager résolution d’espace de noms.
Voici les remarques importantes à prendre en compte lors de l’utilisation de la SetContext méthode .
Si le n’inclut XPathExpression pas de préfixe, il est supposé que l’URI de l’espace de noms est l’espace de noms vide. Si votre code XML inclut un espace de noms par défaut, vous devez toujours utiliser la SetContext méthode et fournir un XmlNamespaceManager objet qui contient un préfixe et un URI d’espace de noms pour gérer l’espace de noms par défaut.
Vous pouvez également fournir un objet pour la résolution d’espace IXmlNamespaceResolver de noms à la Compile méthode lorsque vous créez votre XPathExpression objet.
SetContext accepte XsltContext en tant que programme de résolution d’espace de noms, ce qui vous permet d’implémenter un contexte personnalisé et d’utiliser des fonctions et des variables basées sur IXsltContextFunction et IXsltContextVariable. L’expression XPath les exécute. Pour plus d’informations, consultez Fonctions et variables définies par l’utilisateur.
Voir aussi
- XmlNamespaceManager
- SetContext(IXmlNamespaceResolver)
- IXmlNamespaceResolver
- Compile(String, IXmlNamespaceResolver)
- Fonctions et variables définies par l'utilisateur