|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--java.beans.Encoder | +--java.beans.XMLEncoder
The XMLEncoder
class is a complementary alternative to
the ObjectOutputStream
and can used to generate
a textual representation of a JavaBean in the same
way that the ObjectOutputStream
can
be used to create binary representation of Serializable
objects. For example, the following fragment can be used to create
a textual representation the supplied JavaBean
and all its properties:
XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("Test.xml"))); e.writeObject(new JButton("Hello, world")); e.close();Despite the similarity of their APIs, the
XMLEncoder
class is exclusively designed for the purpose of archiving graphs
of JavaBeans as textual representations of their public
properties. Like Java source files, documents written this way
have a natural immunity to changes in the implementations of the classes
involved. The ObjectOutputStream
continues to be recommended
for interprocess communication and general purpose serialization.
The XMLEncoder
class provides a default denotation for
JavaBeans in which they are represented as XML documents
complying with version 1.0 of the XML specification and the
UTF-8 character encoding of the Unicode/ISO 10646 character set.
The XML documents produced by the XMLEncoder
class are:
XMLEncoder
class
uses a redundancy elimination algorithm internally so that the
default values of a Bean's properties are not written to the stream.
Below is an example of an XML archive containing some user interface components from the swing toolkit:
<?xml version="1.0" encoding="UTF-8"?> <java version="1.0" class="java.beans.XMLDecoder"> <object class="javax.swing.JFrame"> <void property="name"> <string>frame1</string> </void> <void property="bounds"> <object class="java.awt.Rectangle"> <int>0</int> <int>0</int> <int>200</int> <int>200</int> </object> </void> <void property="contentPane"> <void method="add"> <object class="javax.swing.JButton"> <void property="label"> <string>Hello</string> </void> </object> </void> </void> <void property="visible"> <boolean>true</boolean> </void> </object> </java>The XML syntax uses the following conventions:
Although all object graphs may be written using just these three tags, the following definitions are included so that common data structures can be expressed more concisely:
Integer
class could be written:
<int>123</int>. Note that the XMLEncoder
class
uses Java's reflection package in which the conversion between
Java's primitive types and their associated "wrapper classes"
is handled internally. The API for the XMLEncoder
class
itself deals only with Object
s.
XMLDecoder
,
ObjectOutputStream
Constructor Summary | |
XMLEncoder(OutputStream out)
Creates a new output stream for sending JavaBeans to the stream out using an XML encoding. |
Method Summary | |
void |
close()
This method calls flush , writes the closing
postamble and then closes the output stream associated
with this stream. |
void |
flush()
This method writes out the preamble associated with the XML encoding if it has not been written already and then writes out all of the values that been written to the stream since the last time flush
was called. |
Object |
getOwner()
Gets the owner of this encoder. |
void |
setOwner(Object owner)
Sets the owner of this encoder to owner . |
void |
writeExpression(Expression oldExp)
This method calls the superclass's implementation and records oldExp so that it can produce the
actual output when the stream is flushed. |
void |
writeObject(Object o)
Write an XML representation of the specified object to the output. |
void |
writeStatement(Statement oldStm)
This method calls the superclass's implementation and records oldStm so that it can produce the
actual output when the stream is flushed. |
Methods inherited from class java.beans.Encoder |
get, getExceptionListener, getPersistenceDelegate, remove, setExceptionListener, setPersistenceDelegate |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public XMLEncoder(OutputStream out)
out
using an XML encoding.
out
- The stream to which the XML representation of
the objects will be sent.XMLDecoder.XMLDecoder(InputStream)
Method Detail |
public void setOwner(Object owner)
owner
.
owner
- The owner of this encoder.getOwner()
public Object getOwner()
setOwner(java.lang.Object)
public void writeObject(Object o)
writeObject
in class Encoder
o
- The object to be written to the stream.XMLDecoder.readObject()
public void writeStatement(Statement oldStm)
oldStm
so that it can produce the
actual output when the stream is flushed.
writeStatement
in class Encoder
oldStm
- The statement to be written to the stream.public void writeExpression(Expression oldExp)
oldExp
so that it can produce the
actual output when the stream is flushed.
writeExpression
in class Encoder
oldExp
- The expression to be written to the stream.public void flush()
flush
was called. After flushing, all internal references to the
values that were written to this stream are cleared.
public void close()
flush
, writes the closing
postamble and then closes the output stream associated
with this stream.
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Java, Java 2D, and JDBC are trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.