This topic has not yet been rated Rate this topic

XmlTextWriter Class

Represents a writer that provides a fast, non-cached, forward-only way of generating streams or files containing XML data that conforms to the W3C Extensible Markup Language (XML) 1.0 and the Namespaces in XML recommendations.

System.Object
  System.Xml.XmlWriter
    System.Xml.XmlTextWriter

Namespace:  System.Xml
Assembly:  System.Xml (in System.Xml.dll)
public class XmlTextWriter : XmlWriter

The XmlTextWriter type exposes the following members.

  Name Description
Public method Supported by the XNA Framework XmlTextWriter(TextWriter) Creates an instance of the XmlTextWriter class using the specified TextWriter.
Public method Supported by the XNA Framework XmlTextWriter(Stream, Encoding) Creates an instance of the XmlTextWriter class using the specified stream and encoding.
Public method Supported by the XNA Framework XmlTextWriter(String, Encoding) Creates an instance of the XmlTextWriter class using the specified file.
Top
  Name Description
Public property Supported by the XNA Framework BaseStream Gets the underlying stream object.
Public property Supported by the XNA Framework Formatting Indicates how the output is formatted.
Public property Supported by the XNA Framework Indentation Gets or sets how many IndentChars to write for each level in the hierarchy when Formatting is set to Formatting.Indented.
Public property Supported by the XNA Framework IndentChar Gets or sets which character to use for indenting when Formatting is set to Formatting.Indented.
Public property Supported by the XNA Framework Namespaces Gets or sets a value indicating whether to do namespace support.
Public property Supported by the XNA Framework QuoteChar Gets or sets which character to use to quote attribute values.
Public property Supported by the XNA Framework Settings Gets the XmlWriterSettings object used to create this XmlWriter instance. (Inherited from XmlWriter.)
Public property Supported by the XNA Framework WriteState Gets the state of the writer. (Overrides XmlWriter.WriteState.)
Public property Supported by the XNA Framework XmlLang Gets the current xml:lang scope. (Overrides XmlWriter.XmlLang.)
Public property Supported by the XNA Framework XmlSpace Gets an XmlSpace representing the current xml:space scope. (Overrides XmlWriter.XmlSpace.)
Top
  Name Description
Public method Supported by the XNA Framework Close Closes this stream and the underlying stream. (Overrides XmlWriter.Close.)
Protected method Supported by the XNA Framework Dispose(Boolean) Releases the unmanaged resources used by the XmlWriter and optionally releases the managed resources. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Supported by the XNA Framework Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method Supported by the XNA Framework Flush Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. (Overrides XmlWriter.Flush.)
Public method Supported by the XNA Framework GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method Supported by the XNA Framework GetType Gets the Type of the current instance. (Inherited from Object.)
Public method Supported by the XNA Framework LookupPrefix Returns the closest prefix defined in the current namespace scope for the namespace URI. (Overrides XmlWriter.LookupPrefix(String).)
Protected method Supported by the XNA Framework MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by the XNA Framework ToString Returns a string that represents the current object. (Inherited from Object.)
Public method Supported by the XNA Framework WriteAttributes When overridden in a derived class, writes out all the attributes found at the current position in the XmlReader. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteAttributeString(String, String) When overridden in a derived class, writes out the attribute with the specified local name and value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteAttributeString(String, String, String) When overridden in a derived class, writes an attribute with the specified local name, namespace URI, and value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteAttributeString(String, String, String, String) When overridden in a derived class, writes out the attribute with the specified prefix, local name, namespace URI, and value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteBase64 Encodes the specified binary bytes as base64 and writes out the resulting text. (Overrides XmlWriter.WriteBase64(Byte(), Int32, Int32).)
Public method Supported by the XNA Framework WriteBinHex Encodes the specified binary bytes as binhex and writes out the resulting text. (Overrides XmlWriter.WriteBinHex(Byte(), Int32, Int32).)
Public method Supported by the XNA Framework WriteCData Writes out a <![CDATA[...]]> block containing the specified text. (Overrides XmlWriter.WriteCData(String).)
Public method Supported by the XNA Framework WriteCharEntity Forces the generation of a character entity for the specified Unicode character value. (Overrides XmlWriter.WriteCharEntity(Char).)
Public method Supported by the XNA Framework WriteChars Writes text one buffer at a time. (Overrides XmlWriter.WriteChars(Char(), Int32, Int32).)
Public method Supported by the XNA Framework WriteComment Writes out a comment <!--...--> containing the specified text. (Overrides XmlWriter.WriteComment(String).)
Public method Supported by the XNA Framework WriteDocType Writes the DOCTYPE declaration with the specified name and optional attributes. (Overrides XmlWriter.WriteDocType(String, String, String, String).)
Public method Supported by the XNA Framework WriteElementString(String, String) Writes an element with the specified local name and value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteElementString(String, String, String) Writes an element with the specified local name, namespace URI, and value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteElementString(String, String, String, String) Writes an element with the specified local name, namespace URI, and value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteEndAttribute Closes the previous WriteStartAttribute call. (Overrides XmlWriter.WriteEndAttribute.)
Public method Supported by the XNA Framework WriteEndDocument Closes any open elements or attributes and puts the writer back in the Start state. (Overrides XmlWriter.WriteEndDocument.)
Public method Supported by the XNA Framework WriteEndElement Closes one element and pops the corresponding namespace scope. (Overrides XmlWriter.WriteEndElement.)
Public method Supported by the XNA Framework WriteEntityRef Writes out an entity reference as &name;. (Overrides XmlWriter.WriteEntityRef(String).)
Public method Supported by the XNA Framework WriteFullEndElement Closes one element and pops the corresponding namespace scope. (Overrides XmlWriter.WriteFullEndElement.)
Public method Supported by the XNA Framework WriteName Writes out the specified name, ensuring it is a valid name according to the W3C XML 1.0 recommendation (http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). (Overrides XmlWriter.WriteName(String).)
Public method Supported by the XNA Framework WriteNmToken Writes out the specified name, ensuring it is a valid NmToken according to the W3C XML 1.0 recommendation (http://www.w3.org/TR/1998/REC-xml-19980210#NT-Name). (Overrides XmlWriter.WriteNmToken(String).)
Public method Supported by the XNA Framework WriteNode(XmlReader, Boolean) When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling. (Inherited from XmlWriter.)
Public method WriteNode(XPathNavigator, Boolean) Copies everything from the XPathNavigator object to the writer. The position of the XPathNavigator remains unchanged. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteProcessingInstruction Writes out a processing instruction with a space between the name and text as follows: <?name text?>. (Overrides XmlWriter.WriteProcessingInstruction(String, String).)
Public method Supported by the XNA Framework WriteQualifiedName Writes out the namespace-qualified name. This method looks up the prefix that is in scope for the given namespace. (Overrides XmlWriter.WriteQualifiedName(String, String).)
Public method Supported by the XNA Framework WriteRaw(String) Writes raw markup manually from a string. (Overrides XmlWriter.WriteRaw(String).)
Public method Supported by the XNA Framework WriteRaw(Char(), Int32, Int32) Writes raw markup manually from a character buffer. (Overrides XmlWriter.WriteRaw(Char(), Int32, Int32).)
Public method Supported by the XNA Framework WriteStartAttribute(String) Writes the start of an attribute with the specified local name. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteStartAttribute(String, String) Writes the start of an attribute with the specified local name and namespace URI. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteStartAttribute(String, String, String) Writes the start of an attribute. (Overrides XmlWriter.WriteStartAttribute(String, String, String).)
Public method Supported by the XNA Framework WriteStartDocument Writes the XML declaration with the version "1.0". (Overrides XmlWriter.WriteStartDocument.)
Public method Supported by the XNA Framework WriteStartDocument(Boolean) Writes the XML declaration with the version "1.0" and the standalone attribute. (Overrides XmlWriter.WriteStartDocument(Boolean).)
Public method Supported by the XNA Framework WriteStartElement(String) When overridden in a derived class, writes out a start tag with the specified local name. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteStartElement(String, String) When overridden in a derived class, writes the specified start tag and associates it with the given namespace. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteStartElement(String, String, String) Writes the specified start tag and associates it with the given namespace and prefix. (Overrides XmlWriter.WriteStartElement(String, String, String).)
Public method Supported by the XNA Framework WriteString Writes the given text content. (Overrides XmlWriter.WriteString(String).)
Public method Supported by the XNA Framework WriteSurrogateCharEntity Generates and writes the surrogate character entity for the surrogate character pair. (Overrides XmlWriter.WriteSurrogateCharEntity(Char, Char).)
Public method Supported by the XNA Framework WriteValue(Boolean) Writes a Boolean value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(DateTime) Writes a DateTime value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(Decimal) Writes a Decimal value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(Double) Writes a Double value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(Int32) Writes a Int32 value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(Int64) Writes a Int64 value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(Object) Writes the object value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(Single) Writes a single-precision floating-point number. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteValue(String) Writes a String value. (Inherited from XmlWriter.)
Public method Supported by the XNA Framework WriteWhitespace Writes out the given white space. (Overrides XmlWriter.WriteWhitespace(String).)
Top
  Name Description
Explicit interface implemetation Private method Supported by the XNA Framework IDisposable.Dispose For a description of this member, see IDisposable.Dispose. (Inherited from XmlWriter.)
Top

This class implements the XmlWriter class.

Note Note

In the .NET Framework version 2.0 release, the recommended practice is to create XmlWriter instances using the XmlWriter.Create method and the XmlWriterSettings class. This allows you to take full advantage of all the new features introduced in this release. For more information, see Creating XML Writers.

XmlTextWriter maintains a namespace stack corresponding to all the namespaces defined in the current element stack. Using XmlTextWriter you can declare namespaces manually.

 w.WriteStartElement("root");
 w.WriteAttributeString("xmlns", "x", null, "urn:1");
  w.WriteStartElement("item","urn:1");
  w.WriteEndElement();
  w.WriteStartElement("item","urn:1");
  w.WriteEndElement();
 w.WriteEndElement();

The above C# code produces the following output. XmlTextWriter promotes the namespace declaration to the root element to avoid having it duplicated on the two child elements. The child elements pick up the prefix from the namespace declaration.

 <root xmlns:x="urn:1">
  <x:item/>
  <x:item/>
 </x:root>

XmlTextWriter also allows you to override the current namespace declaration. In the following example, the namespace URI "123" is overridden by "abc" to produce the XML element <x:node xmlns:x="abc"/>.

 w.WriteStartElement("x","node","123");
 w.WriteAttributeString("xmlns","x",null,"abc");

By using the write methods that take a prefix as an argument you can also specify which prefix to use. In the following example, two different prefixes are mapped to the same namespace URI to produce the XML text <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>.

 XmlTextWriter w = new XmlTextWriter(Console.Out);
 w.WriteStartElement("x","root","urn:1");
  w.WriteStartElement("y","item","urn:1");
  w.WriteEndElement();
 w.WriteEndElement();
 w.Close();

If there are multiple namespace declarations mapping different prefixes to the same namespace URI, XmlTextWriter walks the stack of namespace declarations backwards and picks the closest one.

 XmlTextWriter w = new XmlTextWriter(Console.Out);
 w.Formatting = Formatting.Indented;
 w.WriteStartElement("x","root","urn:1");
 w.WriteStartElement("y","item","urn:1");
 w.WriteAttributeString("attr","urn:1","123");
 w.WriteEndElement();
 w.WriteEndElement();
 w.Close();

In the above C# example, because the WriteAttributeString call does not specify a prefix, the writer uses the last prefix pushed onto the namespace stack, and produces the following XML:

 <x:root xmlns:x="urn:1">
  <y:item y:attr="123" xmlns:y="urn:1" />
 </x:root>

If namespace conflicts occur, XmlTextWriter resolves them by generating alternate prefixes. For example, if an attribute and element have the same prefix but different namespaces, XmlWriter generates an alternate prefix for the attribute. The generated prefixes are named n{i} where i is a number beginning at 1. The number is reset to 1 for each element.

Attributes which are associated with a namespace URI must have a prefix (default namespaces do not apply to attributes). This conforms to section 5.2 of the W3C Namespaces in XML recommendation. If an attribute references a namespace URI, but does not specify a prefix, the writer generates a prefix for the attribute.

When writing an empty element, an additional space is added between tag name and the closing tag, for example <item />. This provides compatibility with older browsers.

When a String is used as method parameter, Nothing and String.Empty are equivalent. String.Empty follows the W3C rules.

To write strongly typed data, use the XmlConvert class to convert data types to string. For example, the following C# code converts the data from Double to String and writes the element <price>19.95</price>.

 Double price = 19.95;
 writer.WriteElementString("price", XmlConvert.ToString(price));

XmlTextWriter does not check for the following:

  • Invalid characters in attribute and element names.

  • Unicode characters that do not fit the specified encoding. If the Unicode characters do not fit the specified encoding, the XmlTextWriter does not escape the Unicode characters into character entities.

  • Duplicate attributes.

  • Characters in the DOCTYPE public identifier or system identifier.

For more information about writing XML, see Writing XML with the XmlWriter.

Security Considerations

The following items are things to consider when working with the XmlTextWriter class.

  • Exceptions thrown by the XmlTextWriter can disclose path information that you do not want bubbled up to the application. Your applications must catch exceptions and process them appropriately.

  • When you pass the XmlTextWriter to another application the underlying stream is exposed to that application. If you need to pass the XmlTextWriter to a semi-trusted application, you should use an XmlWriter object created by the Create method instead.

  • The XmlTextWriter does not validate any data that is passed to the WriteDocType or WriteRaw methods. You should not pass arbitrary data to these methods.

  • If the default settings are changed, there is no guarantee that the generated output is well-formed XML data.

  • Do not accept supporting components, such as an Encoding object, from an untrusted source.

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(2000 characters remaining)
Community Content Add
Annotations FAQ