Visual C++ .NET/XML/XmlDocument

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

Create Navigator from XMLDocument

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


Get first child from XMLDocument

 
#include "stdafx.h"
using namespace System;
using namespace System::Xml;

void Navigate(XmlNode ^node, int depth)
{
    if (node == nullptr)
        return;
    Console::WriteLine(depth);
    Console::WriteLine(node->NodeType.ToString());
    Console::WriteLine(node->Name);
    Console::WriteLine(node->Value);
    if (node->Attributes != nullptr)
    {
        for (int i = 0; i < node->Attributes->Count; i++)
        {
            Console::WriteLine(depth+1);
            Console::WriteLine(node->Attributes[i]->Name);
            Console::WriteLine(node->Attributes[i]->Value);
        }
    }
    Navigate(node->FirstChild, depth+1);
    Navigate(node->NextSibling, depth);
}

void main()
{
    XmlDocument ^doc = gcnew XmlDocument();
    try
    {
        XmlReader ^reader = XmlReader::Create("..\\Monsters.xml");
        doc->Load(reader);
        reader->Close();
        XmlNode ^node = doc->FirstChild;
        
        Navigate(node, 0);
    }
    catch (Exception ^e)
    {
        Console::WriteLine("Error Occurred: {0}", e->Message);
    }
}


Load xml document to XMLDocument

 
#include "stdafx.h"
using namespace System;
using namespace System::Xml;

void Navigate(XmlNode ^node, int depth)
{
    if (node == nullptr)
        return;
    Console::WriteLine(depth);
    Console::WriteLine(node->NodeType.ToString());
    Console::WriteLine(node->Name);
    Console::WriteLine(node->Value);
    if (node->Attributes != nullptr)
    {
        for (int i = 0; i < node->Attributes->Count; i++)
        {
            Console::WriteLine(depth+1);
            Console::WriteLine(node->Attributes[i]->Name);
            Console::WriteLine(node->Attributes[i]->Value);
        }
    }
    Navigate(node->FirstChild, depth+1);
    Navigate(node->NextSibling, depth);
}

void main()
{
    XmlDocument ^doc = gcnew XmlDocument();
    try
    {
        XmlReader ^reader = XmlReader::Create("..\\Monsters.xml");
        doc->Load(reader);
        reader->Close();
        XmlNode ^node = doc->FirstChild;
        
        Navigate(node, 0);
    }
    catch (Exception ^e)
    {
        Console::WriteLine("Error Occurred: {0}", e->Message);
    }
}


Move to the root of XMLDocument

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


Output xml tags

 
#include "stdafx.h"
using namespace System;
using namespace System::Configuration;
using namespace System::Data;
using namespace System::Data::SqlClient;
using namespace System::Xml;
void Navigate(XmlNode ^node, int depth)
{
    if (node == nullptr)
        return;
    Console::WriteLine(depth);
    Console::WriteLine(node->NodeType.ToString());
    Console::WriteLine(node->Name);
    Console::WriteLine(node->Value);
    if (node->Attributes != nullptr)
    {
        for (int i = 0; i < node->Attributes->Count; i++)
        {
            Console::WriteLine(node->Attributes[i]->Name);
            Console::WriteLine(node->Attributes[i]->Value);
        }
    }
    Navigate(node->FirstChild, depth+1);
    Navigate(node->NextSibling, depth);
}
void main(){
    XmlDocument ^doc = gcnew XmlDocument();
    SqlConnection ^connect = gcnew SqlConnection();
    
    connect->ConnectionString = "SQLConnection";
    SqlDataAdapter ^dAdapt = gcnew SqlDataAdapter();
    DataSet ^dSet          = gcnew DataSet();
    dAdapt->SelectCommand  = gcnew SqlCommand("SELECT * FROM Authors", connect);
        
    dAdapt->Fill(dSet, "Authors");
    XmlDataDocument ^doc1 = gcnew XmlDataDocument(dSet);
    Navigate(doc1->DocumentElement, 0);
}