View Javadoc

1   /*
2    * $Id: XmlToDomDocument.java 7976 2007-08-21 14:26:13Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transformers.xml;
12  
13  import org.mule.umo.transformer.TransformerException;
14  
15  import javax.xml.transform.OutputKeys;
16  import javax.xml.transform.Source;
17  import javax.xml.transform.Transformer;
18  import javax.xml.transform.TransformerFactory;
19  
20  import org.w3c.dom.Document;
21  
22  /**
23   * <code>XmlToDomDocument</code> transforms a XML String to org.w3c.dom.Document.
24   */
25  public class XmlToDomDocument extends AbstractXmlTransformer
26  {
27  
28      public XmlToDomDocument()
29      {
30          registerSourceType(String.class);
31          registerSourceType(byte[].class);
32      }
33  
34      public Object doTransform(Object src, String encoding) throws TransformerException
35      {
36          try
37          {
38              Source sourceDoc = getXmlSource(src);
39              if (sourceDoc == null) return null;
40  
41              // If returnClass is not set, assume W3C DOM
42              // This is the original behaviour
43              ResultHolder holder = getResultHolder(returnClass);
44              if (holder == null) holder = getResultHolder(Document.class);
45  
46              Transformer idTransformer = TransformerFactory.newInstance().newTransformer();
47              idTransformer.setOutputProperty(OutputKeys.ENCODING, encoding);
48              idTransformer.transform(sourceDoc, holder.getResult());
49  
50              return holder.getResultObject();
51          }
52          catch (Exception e)
53          {
54              throw new TransformerException(this, e);
55          }
56      }
57  }