XPathExpression.SetContext Método

Definição

Quando substituído em uma classe derivada, especifica o objeto IXmlNamespaceResolver a ser usado para resolução de namespace.

Sobrecargas

SetContext(IXmlNamespaceResolver)

Quando substituído em uma classe derivada, especifica o objeto IXmlNamespaceResolver a ser usado para resolução de namespace.

SetContext(XmlNamespaceManager)

Quando substituído em uma classe derivada, especifica o objeto XmlNamespaceManager a ser usado para resolução de namespace.

SetContext(IXmlNamespaceResolver)

Origem:
XPathExpr.cs
Origem:
XPathExpr.cs
Origem:
XPathExpr.cs

Quando substituído em uma classe derivada, especifica o objeto IXmlNamespaceResolver a ser usado para resolução de namespace.

public abstract void SetContext (System.Xml.IXmlNamespaceResolver? nsResolver);
public abstract void SetContext (System.Xml.IXmlNamespaceResolver nsResolver);

Parâmetros

nsResolver
IXmlNamespaceResolver

Um objeto que implementa a interface IXmlNamespaceResolver a ser usada para resolução de namespaces.

Exceções

O parâmetro de objeto IXmlNamespaceResolver não é derivado de IXmlNamespaceResolver.

Exemplos

O exemplo a seguir mostra como usar o tipo de retorno XPath para determinar como processar a expressão XPath e como usar o SetContext método para fornecer um XmlNamespaceManager objeto para resolução de namespace.

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

O exemplo usa o arquivo contosoBooks.xml como entrada.

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

Comentários

Há suporte para a resolução de namespace usando classes que implementam a IXmlNamespaceResolver interface, como a XmlNamespaceManager classe . O XmlNamespaceManager armazena mapeamentos de URI (Uniform Resource Identifier) de prefixo e namespace. Se o exigir resolução de XPathExpression namespace, o par de URI de prefixo e namespace deverá ser adicionado a um objeto, como a XmlNamespaceManager classe , que implementa a IXmlNamespaceResolver interface, e o SetContext método deve ser chamado para especificar o objeto de IXmlNamespaceResolver interface a ser usado para resolução de namespace.

Veja a seguir notas importantes a serem consideradas ao usar o SetContext método .

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

SetContext(XmlNamespaceManager)

Origem:
XPathExpr.cs
Origem:
XPathExpr.cs
Origem:
XPathExpr.cs

Quando substituído em uma classe derivada, especifica o objeto XmlNamespaceManager a ser usado para resolução de namespace.

public abstract void SetContext (System.Xml.XmlNamespaceManager nsManager);

Parâmetros

nsManager
XmlNamespaceManager

Um objeto XmlNamespaceManager a ser usado para resolução de namespace.

Exceções

O parâmetro de objeto XmlNamespaceManager não é derivado da classe XmlNamespaceManager.

Exemplos

O exemplo a seguir mostra como usar o tipo de retorno XPath para determinar como processar a expressão XPath e como usar o SetContext método para fornecer um XmlNamespaceManager objeto para resolução de namespace.

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

O exemplo usa o arquivo contosoBooks.xml como entrada.

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

Comentários

Há suporte para a resolução de namespace usando a XmlNamespaceManager classe que armazena mapeamentos de URI (Uniform Resource Identifier) de prefixo e namespace. Se o exigir resolução de XPathExpression namespace, o par de URI de prefixo e namespace deverá ser adicionado ao XmlNamespaceManager objeto e o SetContext método deverá ser chamado para especificar o XmlNamespaceManager objeto a ser usado para resolução de namespace.

Veja a seguir notas importantes a serem consideradas ao usar o SetContext método .

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1