Visual C++ .NET/XML/XmlDocument

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

Create Navigator from XMLDocument

<source lang="csharp">

  1. 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);
   }

}

 </source>


Get first child from XMLDocument

<source lang="csharp">

  1. 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);
   }

}

 </source>


Load xml document to XMLDocument

<source lang="csharp">

  1. 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);
   }

}

 </source>


Move to the root of XMLDocument

<source lang="csharp">

  1. 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);
   }

}

 </source>


Output xml tags

<source lang="csharp">

  1. 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);

}

 </source>