You start an element and until you end the element, the attributes are added to that element. Make sure you're matching up the element start/end properly in your code. The code you posted earlier wouldn't compile without some changes.
If you read the exceptions you're getting, look at the resulting output (it does stop at where it was in the file.. ) you can figure out just what is happening.
CODE
XmlTextWriter bankWriter =
new XmlTextWriter(
@"C:\\xml.xml", null );
try
{
bankWriter.Formatting = Formatting.Indented;
bankWriter.Indentation = 6;
bankWriter.Namespaces = false;
bankWriter.WriteStartDocument( );
bankWriter.WriteStartElement( "", "form", "" );
bankWriter.WriteStartElement( "", "name", "" );
bankWriter.WriteString( "test" );
bankWriter.WriteEndElement( );
bankWriter.WriteStartElement( "", "controls", "" );
bankWriter.WriteStartElement( "", "control", "" );
bankWriter.WriteAttributeString( "type", "textbox" );
bankWriter.WriteAttributeString( "caption", "name" );
bankWriter.WriteAttributeString( "order", "1" );
bankWriter.WriteEndElement( );
bankWriter.WriteEndElement( );
bankWriter.WriteEndElement( );
bankWriter.Flush( );
}
catch ( Exception ex )
{
Console.WriteLine( "Exception: {0}", ex.ToString( ) );
}
finally
{
bankWriter.Close( );
}