XPathNavigator::NamespaceURI Property

 

When overridden in a derived class, gets the namespace URI of the current node.

Namespace:   System.Xml.XPath
Assembly:  System.Xml (in System.Xml.dll)

public:
property String^ NamespaceURI {
	virtual String^ get() abstract;
}

Property Value

Type: System::String^

A String that contains the namespace URI of the current node, or String::Empty if the current node has no namespace URI.

The namespace URI returned depends on the XPathNodeType of the current node.

The NamespaceURI property returns urn:samples for the node <bk:book xmlns:bk='urn:samples'>.

Only Element and AttributeXPathNodeType nodes can have a namespace URI.

The following example iterates over the node tree recursively, and displays information about Element and Text nodes.

  static void XPathNavigatorMethods_MoveToNext()
  {

      XPathDocument^ document = gcnew XPathDocument("books.xml");
      XPathNavigator^ navigator = document->CreateNavigator();
      XPathNodeIterator^ nodeset = navigator->Select("descendant::book[author/last-name='Melville']");

      while (nodeset->MoveNext())
      {
          // Clone iterator here when working with it.
          RecursiveWalk(nodeset->Current->Clone());
      }
  }

  static void RecursiveWalk(XPathNavigator^ navigator)
  {
      switch (navigator->NodeType)
      {
case XPathNodeType::Element:
	if (navigator->Prefix == String::Empty)
                  Console::WriteLine("<{0}>", navigator->LocalName);
              else
    Console::Write("<{0}:{1}>", navigator->Prefix, navigator->LocalName);
                  Console::WriteLine("\t" + navigator->NamespaceURI);
              break;
case XPathNodeType::Text:
              Console::WriteLine("\t" + navigator->Value);
              break;
      }

      if (navigator->MoveToFirstChild())
      {
          do
          {
              RecursiveWalk(navigator);
          } while (navigator->MoveToNext());

          navigator->MoveToParent();
	if (navigator->NodeType == XPathNodeType::Element)
              Console::WriteLine("</{0}>", navigator->Name);
      }
      else
      {
	if (navigator->NodeType == XPathNodeType::Element)
          {
              Console::WriteLine("</{0}>", navigator->Name);
         }
      }
  }

The example takes the books.xml file as an input.


<?xml version="1.0" encoding="utf-8" ?> 
<bookstore>
    <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>

.NET Framework
Available since 1.1
Silverlight
Available since 4.0
Return to top
Show: