class StreamingMarkupBuilder extends AbstractStreamingBuilder
A builder class for creating XML markup. This implementation uses a StreamingMarkupWriter to handle output.
Example:
System.out << new StreamingMarkupBuilder().bind {
   root {
     a( a1:'one' ) {
       b { mkp.yield( '3 < 5' ) }
       c( a2:'two', 'blah' )
     }
   }
 }
 Will output the following String, without newlines or indentation:  
 <root>
   <a a1='one'>
     <b>3 < 5</b>
     <c a2='two'>blah</c>
   </a>
 </root>
 Notes:
 mkp is a special namespace used to escape
 away from the normal building mode of the builder and get access
 to helper markup methods 'yield', 'pi', 'comment', 'out',
 'namespaces', 'xmlDeclaration' and 'yieldUnescaped'.
 | Type | Name and description | 
|---|---|
| Object | builder | 
| Object | commentClosureInvoked by calling mkp.comment | 
| Object | declarationClosureInvoked by calling mkp.xmlDeclaration | 
| Object | encoding | 
| boolean | expandEmptyElements | 
| Object | noopClosureInvoked by calling mkp.yield. | 
| Object | pendingStack | 
| Object | piClosureInvoked by calling mkp.pi | 
| Object | tagClosure | 
| Object | unescapedClosureInvoked by calling mkp.yieldUnescaped. | 
| boolean | useDoubleQuotes | 
| Properties inherited from class | Properties | 
|---|---|
| class AbstractStreamingBuilder | aliasSetupClosure, badTagClosure, builder, getNamespaceClosure, namespaceSetupClosure, specialTags, toMapStringClosure | 
| Constructor and description | 
|---|
| StreamingMarkupBuilder() | 
 Invoked by calling mkp.comment
 Invoked by calling mkp.xmlDeclaration
 Invoked by calling mkp.yield.  Used to render text to the 
 output stream.  Any XML reserved characters will be escaped to ensure
 well-formedness.
 Invoked by calling mkp.pi
 Invoked by calling mkp.yieldUnescaped.  Used to render 
 literal text or markup to the output stream.  No escaping is done on the
 output.
Returns a Writable object, which may be used to render the markup directly to a String, or send the output to a stream.
Examples:
 // get the markup as a string:
 new StreamingMarkupBuilder().bind { div { out << "hello world" } }.toString()
 
 // send the output directly to a file:
 new StreamingMarkupBuilder().bind { div { out << "hello world" } } \
      .writeTo( new File('myFile.xml').newWriter() )
   Convenience method for binding a single node.
 The call bindNode(node) is equivalent to bind{ out << node }.
 Returns a Writable object, which may be used to render
 the markup directly to a String, or send the output to a stream. 
Copyright © 2003-2025 The Apache Software Foundation. All rights reserved.