XPathExpression.SetContext Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer het object wordt overschreven in een afgeleide klasse, geeft u het IXmlNamespaceResolver object op dat moet worden gebruikt voor naamruimteomzetting.
Overloads
| Name | Description |
|---|---|
| SetContext(IXmlNamespaceResolver) |
Wanneer het object wordt overschreven in een afgeleide klasse, geeft u het IXmlNamespaceResolver object op dat moet worden gebruikt voor naamruimteomzetting. |
| SetContext(XmlNamespaceManager) |
Wanneer het object wordt overschreven in een afgeleide klasse, geeft u het XmlNamespaceManager object op dat moet worden gebruikt voor naamruimteomzetting. |
SetContext(IXmlNamespaceResolver)
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
Wanneer het object wordt overschreven in een afgeleide klasse, geeft u het IXmlNamespaceResolver object op dat moet worden gebruikt voor naamruimteomzetting.
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)
Parameters
- nsResolver
- IXmlNamespaceResolver
Een object dat de IXmlNamespaceResolver interface implementeert die moet worden gebruikt voor naamruimteomzetting.
Uitzonderingen
De IXmlNamespaceResolver objectparameter is niet afgeleid van IXmlNamespaceResolver.
Voorbeelden
In het volgende voorbeeld ziet u hoe u het retourtype XPath gebruikt om te bepalen hoe de XPath-expressie moet worden verwerkt en hoe u de SetContext methode gebruikt om een XmlNamespaceManager object op te geven voor naamruimteomzetting.
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
In het voorbeeld wordt het contosoBooks.xml bestand als invoer gebruikt.
<?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>
Opmerkingen
Naamruimteomzetting wordt ondersteund met behulp van klassen die de IXmlNamespaceResolver interface implementeren, zoals de XmlNamespaceManager klasse. De XmlNamespaceManager toewijzingen voorvoegsel en naamruimte Uniform Resource Identifier (URI) worden opgeslagen. Als de XPathExpression naamruimteomzetting vereist, moeten het voorvoegsel en de naamruimte-URI-paar worden toegevoegd aan een object, zoals de XmlNamespaceManager klasse, die de IXmlNamespaceResolver interface implementeert en de SetContext methode moet worden aangeroepen om het IXmlNamespaceResolver interfaceobject op te geven dat moet worden gebruikt voor naamruimteomzetting.
Hier volgen belangrijke opmerkingen bij het gebruik van de SetContext methode.
Als het XPathExpression geen voorvoegsel bevat, wordt ervan uitgegaan dat de naamruimte-URI de lege naamruimte is. Als uw XML een standaardnaamruimte bevat, moet u nog steeds de SetContext methode gebruiken en een object opgeven dat een voorvoegsel en naamruimte-URI bevat om de standaardnaamruimte te verwerken.
U kunt ook een IXmlNamespaceResolver interfaceobject voor naamruimteomzetting aan de Compile methode opgeven wanneer u het XPathExpression object maakt.
SetContext XsltContext accepteert als een naamruimteomzetting, zodat u een aangepaste context kunt implementeren en functies en variabelen kunt gebruiken op IXsltContextFunction basis van enIXsltContextVariable. De XPath-expressie voert deze uit. Zie Door de gebruiker gedefinieerde functies en variabelen voor meer informatie.
Zie ook
- SetContext(XmlNamespaceManager)
- IXmlNamespaceResolver
- Compile(String, IXmlNamespaceResolver)
- Door de gebruiker gedefinieerde functies en variabelen
Van toepassing op
SetContext(XmlNamespaceManager)
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
- Bron:
- XPathExpr.cs
Wanneer het object wordt overschreven in een afgeleide klasse, geeft u het XmlNamespaceManager object op dat moet worden gebruikt voor naamruimteomzetting.
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)
Parameters
- nsManager
- XmlNamespaceManager
Een XmlNamespaceManager object dat moet worden gebruikt voor naamruimteomzetting.
Uitzonderingen
De XmlNamespaceManager objectparameter is niet afgeleid van de XmlNamespaceManager klasse.
Voorbeelden
In het volgende voorbeeld ziet u hoe u het retourtype XPath gebruikt om te bepalen hoe de XPath-expressie moet worden verwerkt en hoe u de SetContext methode gebruikt om een XmlNamespaceManager object op te geven voor naamruimteomzetting.
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
In het voorbeeld wordt het contosoBooks.xml bestand als invoer gebruikt.
<?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>
Opmerkingen
Naamruimteomzetting wordt ondersteund met behulp van de XmlNamespaceManager klasse waarin toewijzingen van voorvoegsel en naamruimte Uniform Resource Identifier (URI) worden opgeslagen. Als voor de XPathExpression naamruimteomzetting is vereist, moeten het voorvoegsel en de naamruimte-URI-paar worden toegevoegd aan het XmlNamespaceManager object en moet de SetContext methode worden aangeroepen om het XmlNamespaceManager object op te geven dat moet worden gebruikt voor naamruimteomzetting.
Hier volgen belangrijke opmerkingen bij het gebruik van de SetContext methode.
Als het XPathExpression geen voorvoegsel bevat, wordt ervan uitgegaan dat de naamruimte-URI de lege naamruimte is. Als uw XML een standaardnaamruimte bevat, moet u nog steeds de SetContext methode gebruiken en een object opgeven dat een XmlNamespaceManager voorvoegsel en naamruimte-URI bevat om de standaardnaamruimte te verwerken.
U kunt ook een IXmlNamespaceResolver object voor naamruimteomzetting aan de Compile methode opgeven wanneer u uw XPathExpression object maakt.
SetContext XsltContext accepteert als een naamruimteomzetting, zodat u een aangepaste context kunt implementeren en functies en variabelen kunt gebruiken op IXsltContextFunction basis van enIXsltContextVariable. De XPath-expressie voert deze uit. Zie Door de gebruiker gedefinieerde functies en variabelen voor meer informatie.
Zie ook
- XmlNamespaceManager
- SetContext(IXmlNamespaceResolver)
- IXmlNamespaceResolver
- Compile(String, IXmlNamespaceResolver)
- Door de gebruiker gedefinieerde functies en variabelen