17.2.1 Marshaller
Spring abstracts all marshalling operations behind theorg.springframework.oxm.Marshallerinterface, the main method of which is shown below.
public interface Marshaller {
    /**
     * Marshal the object graph with the given root into the provided Result.
     */
    void marshal(Object graph, Result result) throws XmlMappingException, IOException;
}
TheMarshallerinterface has one main method, which marshals the given object to a givenjavax.xml.transform.Result. Result is a tagging interface that basically represents an XML output abstraction: concrete implementations wrap various XML representations, as indicated in the table below.
| Result implementation | Wraps XML representation | 
|---|---|
DOMResult | 
org.w3c.dom.Node | 
SAXResult | 
org.xml.sax.ContentHandler | 
StreamResult | 
java.io.File,java.io.OutputStream, orjava.io.Writer | 
![]()  | 
|---|
Although themarshal()method accepts a plain object as its first parameter, mostMarshallerimplementations cannot handle arbitrary objects. Instead, an object class must be mapped in a mapping file, marked with an annotation, registered with the marshaller, or have a common base class. Refer to the further sections in this chapter to determine how your O/X technology of choice manages this. | 
