## org.apache.tools.ant.util
Class DOMElementWriter

    java.lang.Object
      org.apache.tools.ant.util.DOMElementWriter

    public class DOMElementWriter

extends java.lang.Object

Writes a DOM tree to a given Writer. warning: this utility currently does not declare XML Namespaces.

Utility class used by `XmlLogger` and org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter XMLJUnitResultFormatter}.

Nested Class Summary
`static class` `DOMElementWriter.XmlNamespacePolicy` Whether namespaces should be ignored for elements and attributes.

Field Summary
`protected java.lang.String[]` `knownEntities` Don't try to be too smart but at least recognize the predefined entities.

Constructor Summary
`DOMElementWriter()` Create an element writer.
`DOMElementWriter(boolean xmlDeclaration)` Create an element writer XML namespaces will be ignored.
`DOMElementWriter(boolean xmlDeclaration, DOMElementWriter.XmlNamespacePolicy namespacePolicy)` Create an element writer XML namespaces will be ignored.

Method Summary
`void` `closeElement(org.w3c.dom.Element element, java.io.Writer out, int indent, java.lang.String indentWith, boolean hasChildren)` Writes a DOM tree to a stream.
`java.lang.String` `encode(java.lang.String value)` Escape <, > & ', " as their entities and drop characters that are illegal in XML documents.
`java.lang.String` `encodeAttributeValue(java.lang.String value)` Escape <, > & ', " as their entities, \n, \r and \t as numeric entities and drop characters that are illegal in XML documents.
`java.lang.String` `encodedata(java.lang.String value)` Drop characters that are illegal in XML documents.
`boolean` `isLegalCharacter(char c)` Is the given character allowed inside an XML document?
`boolean` `isReference(java.lang.String ent)` Is the given argument a character or entity reference?
`void` `openElement(org.w3c.dom.Element element, java.io.Writer out, int indent, java.lang.String indentWith)` Writes the opening tag - including all attributes - corresponding to a DOM element.
`void` `openElement(org.w3c.dom.Element element, java.io.Writer out, int indent, java.lang.String indentWith, boolean hasChildren)` Writes the opening tag - including all attributes - corresponding to a DOM element.
`void` `write(org.w3c.dom.Element root, java.io.OutputStream out)` Writes a DOM tree to a stream in UTF8 encoding.
`void` `write(org.w3c.dom.Element element, java.io.Writer out, int indent, java.lang.String indentWith)` Writes a DOM tree to a stream.
`void` `writeXMLDeclaration(java.io.Writer wri)` Writes the XML declaration if xmlDeclaration is true.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### knownEntities

    protected java.lang.String[] knownEntities

  Don't try to be too smart but at least recognize the predefined entities.

Constructor Detail

### DOMElementWriter

    public DOMElementWriter()

  Create an element writer. The ?xml? declaration will be included, namespaces ignored.

### DOMElementWriter

    public DOMElementWriter(boolean xmlDeclaration)

  Create an element writer XML namespaces will be ignored.

  Parameters:
    `xmlDeclaration` - flag to indicate whether the ?xml? declaration should be included.
  Since:
    Ant1.7

### DOMElementWriter

    public DOMElementWriter(boolean xmlDeclaration,
                            DOMElementWriter.XmlNamespacePolicy namespacePolicy)

  Create an element writer XML namespaces will be ignored.

  Parameters:
    `xmlDeclaration` - flag to indicate whether the ?xml? declaration should be included.
    `namespacePolicy` - the policy to use.
  Since:
    Ant1.7

Method Detail

### write

    public void write(org.w3c.dom.Element root,
                      java.io.OutputStream out)
               throws java.io.IOException

  Writes a DOM tree to a stream in UTF8 encoding. Note that it prepends the <?xml version='1.0' encoding='UTF-8'?> if the xmlDeclaration field is true. The indent number is set to 0 and a 2-space indent.

  Parameters:
    `root` - the root element of the DOM tree.
    `out` - the outputstream to write to.
  Throws:
    `java.io.IOException` - if an error happens while writing to the stream.

### writeXMLDeclaration

    public void writeXMLDeclaration(java.io.Writer wri)
                             throws java.io.IOException

  Writes the XML declaration if xmlDeclaration is true.

  Parameters:
    `wri` - the writer to write to.
  Throws:
    `java.io.IOException` - if there is an error.
  Since:
    Ant 1.7.0

### write

    public void write(org.w3c.dom.Element element,
                      java.io.Writer out,
                      int indent,
                      java.lang.String indentWith)
               throws java.io.IOException

  Writes a DOM tree to a stream.

  Parameters:
    `element` - the Root DOM element of the tree
    `out` - where to send the output
    `indent` - number of
    `indentWith` - string that should be used to indent the corresponding tag.
  Throws:
    `java.io.IOException` - if an error happens while writing to the stream.

### openElement

    public void openElement(org.w3c.dom.Element element,
                            java.io.Writer out,
                            int indent,
                            java.lang.String indentWith)
                     throws java.io.IOException

  Writes the opening tag - including all attributes - corresponding to a DOM element.

  Parameters:
    `element` - the DOM element to write
    `out` - where to send the output
    `indent` - number of
    `indentWith` - string that should be used to indent the corresponding tag.
  Throws:
    `java.io.IOException` - if an error happens while writing to the stream.

### openElement

    public void openElement(org.w3c.dom.Element element,
                            java.io.Writer out,
                            int indent,
                            java.lang.String indentWith,
                            boolean hasChildren)
                     throws java.io.IOException

  Writes the opening tag - including all attributes - corresponding to a DOM element.

  Parameters:
    `element` - the DOM element to write
    `out` - where to send the output
    `indent` - number of
    `indentWith` - string that should be used to indent the corresponding tag.
    `hasChildren` - whether this element has children.
  Throws:
    `java.io.IOException` - if an error happens while writing to the stream.
  Since:
    Ant 1.7

### closeElement

    public void closeElement(org.w3c.dom.Element element,
                             java.io.Writer out,
                             int indent,
                             java.lang.String indentWith,
                             boolean hasChildren)
                      throws java.io.IOException

  Writes a DOM tree to a stream.

  Parameters:
    `element` - the Root DOM element of the tree
    `out` - where to send the output
    `indent` - number of
    `indentWith` - string that should be used to indent the corresponding tag.
    `hasChildren` - if true indent.
  Throws:
    `java.io.IOException` - if an error happens while writing to the stream.

### encode

    public java.lang.String encode(java.lang.String value)

  Escape <, > & ', " as their entities and drop characters that are illegal in XML documents.

  Parameters:
    `value` - the string to encode.
  Returns:
    the encoded string.

### encodeAttributeValue

    public java.lang.String encodeAttributeValue(java.lang.String value)

  Escape <, > & ', " as their entities, \n, \r and \t as numeric entities and drop characters that are illegal in XML documents.

  Parameters:
    `value` - the string to encode.
  Returns:
    the encoded string.

### encodedata

    public java.lang.String encodedata(java.lang.String value)

  Drop characters that are illegal in XML documents.

  Also ensure that we are not including an `]]>` marker by replacing that sequence with `&#x5d;&#x5d;&gt;`.

  See XML 1.0 2.2 http://www.w3.org/TR/1998/REC-xml-19980210#charsets and 2.7 http://www.w3.org/TR/1998/REC-xml-19980210#sec-cdata-sect.

  Parameters:
    `value` - the value to be encoded.
  Returns:
    the encoded value.

### isReference

    public boolean isReference(java.lang.String ent)

  Is the given argument a character or entity reference?

  Parameters:
    `ent` - the value to be checked.
  Returns:
    true if it is an entity.

### isLegalCharacter

    public boolean isLegalCharacter(char c)

  Is the given character allowed inside an XML document?

  See XML 1.0 2.2 http://www.w3.org/TR/1998/REC-xml-19980210#charsets.

  Parameters:
    `c` - the character to test.
  Returns:
    true if the character is allowed.
  Since:
    1.10, Ant 1.5