XPathNavigator::Name Property

 

When overridden in a derived class, gets the qualified name of the current node.

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

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

Property Value

Type: System::String^

A String that contains the qualified Name of the current node, or String::Empty if the current node does not have a name (for example, text or comment nodes).

The Name returned depends on the XPathNodeType of the current node. For example, the name for the <bk:book> element is bk:book.

The following table lists the value returned by the Name property, based on the XPathNodeType of the current node.

XPathNodeType

Property Value

Element

The qualified name of the Element. In the following example, <bk:book>, the name of the element node is bk:book.

Attribute

The qualified name of the Attribute. In the following example, <book bk:genre='novel'>, the name of the Attribute node is bk:genre.

Namespace

The prefix associated with the namespace URI. In the following namespace declaration, xmlns:bk='urn:samples', the Name property returns bk.

ProcessingInstruction

The target of the ProcessingInstruction. In the following example, <?xml-stylesheet type='text/xsl' href= 'books.xsl'?>, the Name property returns xml-stylesheet.

All other XPathNodeType nodes

String::Empty.

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: