public class XMLEncoder extends Encoder implements AutoCloseable
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 Objects.
 For more information you might also want to check out Using XMLEncoder, an article in The Swing Connection.
XMLDecoder, 
ObjectOutputStream| Constructor and Description | 
|---|
| XMLEncoder(OutputStream out)Creates a new XML encoder to write out JavaBeans
 to the stream  outusing an XML encoding. | 
| XMLEncoder(OutputStream out,
          String charset,
          boolean declaration,
          int indentation)Creates a new XML encoder to write out JavaBeans
 to the stream  outusing the givencharsetstarting from the givenindentation. | 
| Modifier and Type | Method and Description | 
|---|---|
| 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  flushwas 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)Records the Expression so that the Encoder will
 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)Records the Statement so that the Encoder will
 produce the actual output when the stream is flushed. | 
get, getExceptionListener, getPersistenceDelegate, remove, setExceptionListener, setPersistenceDelegatepublic XMLEncoder(OutputStream out)
out using an XML encoding.out - the stream to which the XML representation of
             the objects will be writtenIllegalArgumentException - if out is nullXMLDecoder.XMLDecoder(InputStream)public XMLEncoder(OutputStream out, String charset, boolean declaration, int indentation)
out using the given charset
 starting from the given indentation.out - the stream to which the XML representation of
                     the objects will be writtencharset - the name of the requested charset;
                     may be either a canonical name or an aliasdeclaration - whether the XML declaration should be generated;
                     set this to false
                     when embedding the contents in another XML documentindentation - the number of space characters to indent the entire XML document byIllegalArgumentException - if out or charset is null,
          or if indentation is less than 0IllegalCharsetNameException - if charset name is illegalUnsupportedCharsetException - if no support for the named charset is available
          in this instance of the Java virtual machineUnsupportedOperationException - if loaded charset does not support encodingCharset.forName(String)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 Encodero - The object to be written to the stream.XMLDecoder.readObject()public void writeStatement(Statement oldStm)
This method should only be invoked within the context of initializing a persistence delegate.
writeStatement in class EncoderoldStm - The statement that will be written
               to the stream.PersistenceDelegate.initialize(java.lang.Class<?>, java.lang.Object, java.lang.Object, java.beans.Encoder)public void writeExpression(Expression oldExp)
This method should only be invoked within the context of initializing a persistence delegate or setting up an encoder to read from a resource bundle.
For more information about using resource bundles with the XMLEncoder, see http://java.sun.com/products/jfc/tsc/articles/persistence4/#i18n
writeExpression in class EncoderoldExp - The expression that will be written
               to the stream.PersistenceDelegate.initialize(java.lang.Class<?>, java.lang.Object, java.lang.Object, java.beans.Encoder)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.close in interface AutoCloseable Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2017, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.