|
|||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Class Summary | |
AttributesResult | Represents the attributes on an element. |
ContainerResult | A Result that may contain other Results
as children. |
ContainerResult.NamespaceBinding | |
DocumentResult | Specialized FragmentResult that emits
startDocument
and endDocument events to
the ContentHandler . |
ElementResult | |
FragmentResult | Top-level result that emits its content out to a SAX
ContentHandler and optional
LexicalHandler . |
Result |
Exception Summary | |
ResultException | |
UnresolvableNamespaceException |
An API to simplify generating XML output with SAX.
To use, one may either create a DocumentResult
or FragmentResult
directly,
or use a ResultFactory
.
NOTE: This is an experimental API and is subject to change.
This API is designed with the goal of providing a simple, compact, and readable notation
for creating SAX-based XML output with a reasonable amount of built-in error checking.
The various Result
classes each provide factory
methods for creating those XML constructs appropriate within their context. The
Result
object returned from each of these factory methods
is the one that provides the appropriate context to create further constructs along
a particular axis. This permits a compact syntax that can approach the simplicity
and readability of markup.
For example, consider the following XML snippet:
<department> <employee id="500"> <firstName>Kilgore</firstName> <lastName>Trout</lastName> </employee> </department>The code to produce this directly using SAX would be quite ugly and verbose, in spite of the simplicity of the markup being produced. In contrast, code to produce this using this API could look something like this:
ResultFactory factory = new ResultFactory(); DocumentResult result = factory.newDocumentResult(new StreamResult(System.out)); ElementResult dept = result.element("department"); ElementResult emp = dept.element("employee") emp.attribute("id", "500"); emp.element("firstName").text("Kilgore"); // child element with text content emp.element("lastName").text("Trout"); // child element with text content // output the accumulated result tree result.end();Alternatively, we could emit each element as it is completed, and could use an indentation style that emulates the XML structure we wish to generate:
ResultFactory factory = new ResultFactory(); DocumentResult result = factory.newDocumentResult(new StreamResult(System.out)); result.element("department") .element("employee").attribute("id", "500").end() .element("firstName") .text("Kilgore") .end() .element("lastName") .text("Trout") .end(); // bail out here and output the remaining result tree result.end();Note that we used a JAXP
javax.xml.transform.stream.StreamResult
to receive the final output.
We could have just as easily used a DOMResult
and thus
built a DOM Document or Node substree, or we could have instantiated the DocumentResult
directly with a SAX ContentHandler
and optional LexicalHandler
.
|
|||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |