Use the SetContext method to provide an XmlNamespaceManager object for namespace resolution. : XmlNamespaceManager « XML « C# / CSharp Tutorial






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

/*
<bookstore xmlns="http://www.yourname.com/books">
    <book genre="autobiography" publicationdate="1999-12-12" ISBN="1-111111-11-1">
        <title>A</title>
        <author>
            <first-name>X</first-name>
            <last-name>Y</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="2000-01-01" ISBN="0-201-63361-2">
        <title>Java</title>
        <author>
            <first-name>Q</first-name>
            <last-name>Q</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-22222-57-6">
        <title>C#</title>
        <author>
            <name>Author</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>
*/








30.32.XmlNamespaceManager
30.32.1.Use the SetContext method to provide an XmlNamespaceManager object for namespace resolution.