JavaScript is disabled on your browser.
javolution.xml

Class XMLFormat<T>

  • Direct Known Subclasses:
    XMLFormat.Default


    public abstract class XMLFormat<T>
    extends Object 

    This class represents the format base class for XML serialization and deserialization.

    Instances of this class are typically retrieved from the XMLContext (OSGi service or not).

     @Format(xml=GraphicXML.class) 
     public abstract class Graphic implements XMLSerializable {
     private boolean isVisible;
     private Paint paint; // null if none.
     private Stroke stroke; // null if none.
     private Transform transform; // null if none.
     
     // XML format with positional associations (members identified by their position),
     // see XML package description for examples of name associations.
     public static class GraphicXML extends XMLFormat<Graphic> {
     public void write(Graphic g, OutputElement xml) {
     xml.setAttribute("isVisible", g.isVisible); 
     xml.add(g.paint); // First.
     xml.add(g.stroke); // Second.
     xml.add(g.transform); // Third.
     }
     public void read(InputElement xml, Graphic g) {
     g.isVisible = xml.getAttribute("isVisible", true);
     g.paint = xml.getNext();
     g.stroke = xml.getNext();
     g.transform = xml.getNext();
     return g;
     }
     };
     }
     

    Due to the sequential nature of XML serialization/deserialization, formatting/parsing of XML attributes should always be performed before formatting/parsing of the XML content.

    The mapping between classes and XML formats can be overriden through XMLBinding instances. Here is an example of serialization/deserialization:

     
     // Creates a list holding diverse objects.
     List list = new ArrayList();
     list.add("John Doe");
     list.add(null);
     Map map = new FastMap();
     map.put("ONE", 1);
     map.put("TWO", 2);
     list.add(map);
     
     // Use of custom binding.
     XMLBinding binding = new XMLBinding();
     binding.setAlias(FastMap.class, "Map");
     binding.setAlias(String.class, "String");
     binding.setAlias(Integer.class, "Integer");
     
     // Formats the list to XML .
     OutputStream out = new FileOutputStream("C:/list.xml");
     XMLObjectWriter writer = new XMLObjectWriter().setOutput(out).setBinding(binding);
     writer.write(list, "MyList", ArrayList.class);
     writer.close();
     
    Here is the output list.xml document produced:
     
     <MyList>
     <String value="John Doe"/>
     <Null/>
     <Map>
     <Key class="String" value="ONE"/>
     <Value class="Integer" value="1"/>
     <Key class="String" value="TWO"/>
     <Value class="Integer" value="2"/>
     </Map>
     </MyList>
     
    The list can be read back with the following code:
     // Reads back to a FastTable instance.
     InputStream in = new FileInputStream("C:/list.xml");
     XMLObjectReader reader = new XMLObjectReader().setInput(in).setBinding(binding);
     FastTable table = reader.read("MyList", FastTable.class); 
     reader.close();
     

    Note: Any type for which a text format is defined can be represented as a XML attribute.

    Version:
    5.4, December 1, 2009
    Author:
    Jean-Marie Dautelle
    • Constructor Detail

      • XMLFormat

        protected XMLFormat()
        Default constructor.
    • Method Detail

      • isReferenceable

        public boolean isReferenceable()
        Indicates if the object serialized through this format can be referenced to (default true). This method can be overriden to return false if serialized objects are manipulated "by value".
        Returns:
        true if serialized object may hold a reference; false otherwise.
        See Also:
        XMLReferenceResolver
      • newInstance

        public T newInstance(Class<? extends T> cls,
         XMLFormat.InputElement xml)
         throws XMLStreamException 
        Allocates a new object of the specified class from the specified XML input element. By default, this method returns an object created using the public no-arg constructor of the specified class. XML formats may override this method in order to use private/multi-arg constructors.
        Parameters:
        cls - the class of the object to return.
        xml - the XML input element.
        Returns:
        the object corresponding to the specified XML element.
        Throws:
        XMLStreamException

Copyright © 2005-2013 Javolution. All Rights Reserved.

AltStyle によって変換されたページ (->オリジナル) /