Visual C++ .NET/XML/XPathNavigator

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Move XPathNavigator to first child

 
#include "stdafx.h"
using namespace System;
using namespace System::Xml;
using namespace System::Xml::XPath;
void Navigate(XPathNavigator ^nav, int depth)
{
    Console::WriteLine(depth);
    Console::WriteLine(nav->NodeType.ToString());
    Console::WriteLine(nav->Name);
    Console::WriteLine(nav->Value);
    if (nav->HasAttributes)
    {
        nav->MoveToFirstAttribute();
        do {
            Console::WriteLine(nav->Name);
            Console::WriteLine(nav->Value);
        }
        while(nav->MoveToNextAttribute());
        nav->MoveToParent();
    }

    if (nav->MoveToFirstChild())
    {
        Navigate(nav, depth+1);
        nav->MoveToParent();
    }
    if (nav->MoveToNext())
        Navigate(nav, depth);
}
void main()
{
    XmlDocument ^doc = gcnew XmlDocument();
    try
    {
        doc->Load("..\\Monsters.xml");
        XPathNavigator ^nav = doc->CreateNavigator();
        nav->MoveToRoot();
        Navigate(nav, 0);
    }
    catch (Exception ^e)
    {
        Console::WriteLine("Error Occurred: {0}", e->Message);
    }
}