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

    Nested Classes 
    Modifier and Type Class Description
    static class  DOMElementWriter.XmlNamespacePolicy
    Whether namespaces should be ignored for elements and attributes.
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.lang.String[] knownEntities
    Don't try to be too smart but at least recognize the predefined entities.
  • Constructor Summary

    Constructors 
    Constructor Description
    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

    Modifier and Type Method Description
    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.
    void encodedata​(java.io.Writer out, java.lang.String value)
    Drop characters that are illegal in XML documents and write the rest to the given writer.
    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?
    static boolean isLegalXmlCharacter​(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 Details

    • knownEntities

      protected java.lang.String[] knownEntities
      Don't try to be too smart but at least recognize the predefined entities.
  • Constructor Details

    • 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 Details

    • 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 https://www.w3.org/TR/1998/REC-xml-19980210#charsets and 2.7 https://www.w3.org/TR/1998/REC-xml-19980210#sec-cdata-sect.

      Parameters:
      value - the value to be encoded.
      Returns:
      the encoded value.
    • encodedata

      public void encodedata​(java.io.Writer out, java.lang.String value) throws java.io.IOException
      Drop characters that are illegal in XML documents and write the rest to the given writer.

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

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

      Parameters:
      value - the value to be encoded.
      out - where to write the encoded data to.
      Throws:
      java.io.IOException - if data cannot be written
    • 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 https://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
    • isLegalXmlCharacter

      public static boolean isLegalXmlCharacter​(char c)
      Is the given character allowed inside an XML document?

      See XML 1.0 2.2 https://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.10