Re: Using XmlTextWriter in VC++ App?
"Donos" <donguy76@gmail.com> ha scritto nel messaggio
news:27d00d60-6b9d-4f49-8f22-e9fad56b8369@59g2000hsb.googlegroups.com...
Is it possible to use XmlTextWriter class inside a VC++ project?
I guess this is .NET class used with C#.
You might find interesting also a code I developed to write XML files:
www.geocities.com/giovanni.dicanio/vc/TestXmlWriter.zip
It manages automatic conversion from UTF-16 to UTF-8, so you are not
distracted by these kind of things, and you can just write code like this:
<code>
// Create the XML writer object
XmlWriter xml( L"Test.xml" );
// Write XML content
// (automatic conversion from UTF-16 to UTF-8)
xml.WriteLine(...);
</code>
This class also provides a simple way to indent nodes (via .Indent() and
..Unindent() methods), and helper methods to write comments (using <!--
.... -->), etc.
In the aforementioned zip file, you can find a simple test app for the
class.
Some more info in the 'Info.txt' text file (in the .zip archive, too).
(Please note that the project has a "layered" architecture, meaning that you
can use the TextFileWriterUtf8 helper class to write generic UTF-8 text to
file, also in the case that you are not interested in XML. You can extract
that class from this project and use in other projects.)
Here is a sample code to illustrate other methods of the XmlWriter class, to
produce this XML file:
www.geocities.com/giovanni.dicanio/vc/TestXmlWriter.jpg
<code>
void TestXml()
{
//
// Create XML file
// (the XML header is automatically written)
//
XmlWriter xml( L"Test.xml" );
// Check that opening was successful
ATLASSERT( xml.IsOpen() );
//
// Can write comments
//
xml.WriteComment( L"A Unicode comment with Italian accents ? ? ?" );
xml.WriteComment( "A simple ASCII comment..." );
//
// Simplest use:
// Use WriteLine method to write a line in the XML file.
// If text is UTF-16, automatically converts it to UTF-8
//
xml.WriteLine( "<Root>" );
//
// Can indent and un-indent, using proper methods
//
xml.Indent();
xml.WriteLine( "<Person Name=\"Jeff\" />" );
xml.WriteLine( "<Person Name=\"Bob\" />" );
// Try some Unicode data in name...
xml.WriteLine( L"<Person Name=\"Giosu?\" />" );
xml.Unindent();
//
// Can use helper method to write node begin/end
//
xml.WriteNodeBegin( "MyNode" );
xml.Indent();
xml.WriteNodeBegin( "MyNestedNode" );
xml.Indent();
xml.WriteNodeBegin( "MoreNested" );
xml.Indent();
xml.WriteLine("<SomeData>something</SomeData>");
xml.WriteLine(L"<SomeData>Perch?</SomeData>");
xml.Unindent();
xml.WriteNodeEnd( "MoreNested" );
xml.Unindent;
xml.WriteNodeEnd( "MyNestedNode" );
xml.Unindent();
xml.WriteNodeEnd( "MyNode" );
xml.WriteLine( "</Root>" );
}
</code>
HTH,
Giovanni