Visual C++ .NET/XML/XmlWriter

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

Output xml start element and end element

<source lang="csharp">

  1. include "stdafx.h"
  2. using <system.xml.dll>

using namespace System; using namespace System::Xml; void main() {

   XmlReader ^reader;
   XmlWriter ^writer;
   try
   {
       reader = XmlReader::Create("a.xml");
       XmlWriterSettings ^settings = gcnew XmlWriterSettings();
       settings->Indent = true;
       settings->IndentChars = ("   ");
       writer = XmlWriter::Create("New.xml", settings);
       while (reader->Read())
       {
           switch (reader->NodeType)
           {
               case XmlNodeType::Comment:
                   writer->WriteComment(reader->Value);
                   break;
               case XmlNodeType::Element:
                   writer->WriteStartElement(reader->Name);
                   writer->WriteAttributes(reader, false);
                   if (reader->IsEmptyElement)
                       writer->WriteEndElement();
                  break;
               case XmlNodeType::EndElement:
                   writer->WriteEndElement();
                   if (reader->Name->Equals("Name"))
                   {
                       writer->WriteStartElement("A");
                       writer->WriteString("False");
                       writer->WriteEndElement();
                   }
                   break;
               case XmlNodeType::Text:
                   writer->WriteString(reader->Value);
                   break;
               case XmlNodeType::XmlDeclaration:
                   writer->WriteStartDocument();
                   break;
           }
       }
       writer->Flush();
   }
   catch (Exception ^e)
   {
       Console::WriteLine("XML Update Aborted -- {0}", e->Message);
   }
   finally
   {
       if (writer->WriteState != WriteState::Closed)
       {
           writer->Close();
       }
       if (reader->ReadState != ReadState::Closed)
       {
           reader->Close();
       }
   }

}

 </source>


Output xml with indent

<source lang="csharp">

  1. include "stdafx.h"
  2. using <system.xml.dll>

using namespace System; using namespace System::Xml; void main() {

   XmlReader ^reader;
   XmlWriter ^writer;
   try
   {
       reader = XmlReader::Create("a.xml");
       XmlWriterSettings ^settings = gcnew XmlWriterSettings();
       settings->Indent = true;
       settings->IndentChars = ("   ");
       writer = XmlWriter::Create("New.xml", settings);
       while (reader->Read())
       {
           switch (reader->NodeType)
           {
               case XmlNodeType::Comment:
                   writer->WriteComment(reader->Value);
                   break;
               case XmlNodeType::Element:
                   writer->WriteStartElement(reader->Name);
                   writer->WriteAttributes(reader, false);
                   if (reader->IsEmptyElement)
                       writer->WriteEndElement();
                  break;
               case XmlNodeType::EndElement:
                   writer->WriteEndElement();
                   if (reader->Name->Equals("Name"))
                   {
                       writer->WriteStartElement("A");
                       writer->WriteString("False");
                       writer->WriteEndElement();
                   }
                   break;
               case XmlNodeType::Text:
                   writer->WriteString(reader->Value);
                   break;
               case XmlNodeType::XmlDeclaration:
                   writer->WriteStartDocument();
                   break;
           }
       }
       writer->Flush();
   }
   catch (Exception ^e)
   {
       Console::WriteLine("XML Update Aborted -- {0}", e->Message);
   }
   finally
   {
       if (writer->WriteState != WriteState::Closed)
       {
           writer->Close();
       }
       if (reader->ReadState != ReadState::Closed)
       {
           reader->Close();
       }
   }

}

 </source>


Update XML

<source lang="csharp">

  1. include "stdafx.h"
  2. using <system.xml.dll>

using namespace System; using namespace System::Xml; void main() {

   XmlReader ^reader;
   XmlWriter ^writer;
   try
   {
       reader = XmlReader::Create("a.xml");
       XmlWriterSettings ^settings = gcnew XmlWriterSettings();
       settings->Indent = true;
       settings->IndentChars = ("   ");
       writer = XmlWriter::Create("New.xml", settings);
       while (reader->Read())
       {
           switch (reader->NodeType)
           {
               case XmlNodeType::Comment:
                   writer->WriteComment(reader->Value);
                   break;
               case XmlNodeType::Element:
                   writer->WriteStartElement(reader->Name);
                   writer->WriteAttributes(reader, false);
                   if (reader->IsEmptyElement)
                       writer->WriteEndElement();
                  break;
               case XmlNodeType::EndElement:
                   writer->WriteEndElement();
                   if (reader->Name->Equals("Name"))
                   {
                       writer->WriteStartElement("A");
                       writer->WriteString("False");
                       writer->WriteEndElement();
                   }
                   break;
               case XmlNodeType::Text:
                   writer->WriteString(reader->Value);
                   break;
               case XmlNodeType::XmlDeclaration:
                   writer->WriteStartDocument();
                   break;
           }
       }
       writer->Flush();
   }
   catch (Exception ^e)
   {
       Console::WriteLine("XML Update Aborted -- {0}", e->Message);
   }
   finally
   {
       if (writer->WriteState != WriteState::Closed)
       {
           writer->Close();
       }
       if (reader->ReadState != ReadState::Closed)
       {
           reader->Close();
       }
   }

}

 </source>


Write XML out

<source lang="csharp">

  1. include "stdafx.h"
  2. using <system.xml.dll>

using namespace System; using namespace System::Xml; void main() {

   XmlWriter ^writer;
   try
   {
       XmlWriterSettings ^settings = gcnew XmlWriterSettings();
       settings->Indent = true;
       settings->IndentChars = ("   ");
       settings->NewLineOnAttributes = true;
       writer = XmlWriter::Create("G.xml", settings);
       writer->WriteStartDocument();
       writer->WriteStartElement("M");
       writer->WriteComment("P");
       writer->WriteStartElement("M");
       writer->WriteStartElement("N");
       writer->WriteString("G");
       writer->WriteEndElement();
       writer->WriteStartElement("H");
       writer->WriteAttributeString("D", "1d8");
       writer->WriteAttributeString("D1", "4");
       writer->WriteEndElement();
       writer->WriteEndDocument();
       writer->Flush();
   }
   catch (Exception ^e)
   {
       Console::WriteLine("XML Writer Aborted -- {0}", e->Message);
   }
   finally
   {
       if (writer->WriteState != WriteState::Closed)
       {
           writer->Close();
       }
   }

}

 </source>