Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Protected Ctors](https://developer.android.com/reference/javax/xml/transform/TransformerFactory#proctors) \| [Methods](https://developer.android.com/reference/javax/xml/transform/TransformerFactory#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/javax/xml/transform/TransformerFactory#inhmethods)

# TransformerFactory

` public abstract class TransformerFactory `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | javax.xml.transform.TransformerFactory |

Known direct subclasses [SAXTransformerFactory](https://developer.android.com/reference/javax/xml/transform/sax/SAXTransformerFactory) [SAXTransformerFactory](https://developer.android.com/reference/javax/xml/transform/sax/SAXTransformerFactory) This class extends TransformerFactory to provide SAX-specific factory methods.   

*** ** * ** ***

<br />

A TransformerFactory instance can be used to create `https://developer.android.com/reference/javax/xml/transform/Transformer` and `https://developer.android.com/reference/javax/xml/transform/Templates` objects.

The system property that determines which Factory implementation to create is named `"javax.xml.transform.TransformerFactory"`. This property names a concrete subclass of the `TransformerFactory` abstract class. If the property is not defined, a platform default is be used.

<br />

## Summary

| ### Protected constructors ||
|---|---|
| ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#TransformerFactory()() ` Default constructor is protected on purpose. |

| ### Public methods ||
|---|---|
| ` abstract https://developer.android.com/reference/javax/xml/transform/Source` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#getAssociatedStylesheet(javax.xml.transform.Source,%20java.lang.String,%20java.lang.String,%20java.lang.String)(https://developer.android.com/reference/javax/xml/transform/Source source, https://developer.android.com/reference/java/lang/String media, https://developer.android.com/reference/java/lang/String title, https://developer.android.com/reference/java/lang/String charset) ` <br /> Get the stylesheet specification(s) associated with the XML `Source` document via the [xml-stylesheet processing instruction](http://www.w3.org/TR/xml-stylesheet/) that match the given criteria. |
| ` abstract https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#getAttribute(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Allows the user to retrieve specific attributes on the underlying implementation. |
| ` abstract https://developer.android.com/reference/javax/xml/transform/ErrorListener` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#getErrorListener()() ` Get the error event handler for the TransformerFactory. |
| ` abstract boolean` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#getFeature(java.lang.String)(https://developer.android.com/reference/java/lang/String name) ` Look up the value of a feature. |
| ` abstract https://developer.android.com/reference/javax/xml/transform/URIResolver` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#getURIResolver()() ` Get the object that is used by default during the transformation to resolve URIs used in document(), xsl:import, or xsl:include. |
| ` static https://developer.android.com/reference/javax/xml/transform/TransformerFactory` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#newInstance(java.lang.String,%20java.lang.ClassLoader)(https://developer.android.com/reference/java/lang/String factoryClassName, https://developer.android.com/reference/java/lang/ClassLoader classLoader) ` Returns an instance of the named implementation of `TransformerFactory`. |
| ` static https://developer.android.com/reference/javax/xml/transform/TransformerFactory` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#newInstance()() ` Returns Android's implementation of `TransformerFactory`. |
| ` abstract https://developer.android.com/reference/javax/xml/transform/Templates` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#newTemplates(javax.xml.transform.Source)(https://developer.android.com/reference/javax/xml/transform/Source source) ` Process the Source into a Templates object, which is a a compiled representation of the source. |
| ` abstract https://developer.android.com/reference/javax/xml/transform/Transformer` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#newTransformer(javax.xml.transform.Source)(https://developer.android.com/reference/javax/xml/transform/Source source) ` <br /> Process the `Source` into a `Transformer` `Object`. |
| ` abstract https://developer.android.com/reference/javax/xml/transform/Transformer` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#newTransformer()() ` <br /> Create a new `Transformer` that performs a copy of the `Source` to the `Result`. |
| ` abstract void` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#setAttribute(java.lang.String,%20java.lang.Object)(https://developer.android.com/reference/java/lang/String name, https://developer.android.com/reference/java/lang/Object value) ` Allows the user to set specific attributes on the underlying implementation. |
| ` abstract void` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#setErrorListener(javax.xml.transform.ErrorListener)(https://developer.android.com/reference/javax/xml/transform/ErrorListener listener) ` Set the error event listener for the TransformerFactory, which is used for the processing of transformation instructions, and not for the transformation itself. |
| ` abstract void` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#setFeature(java.lang.String,%20boolean)(https://developer.android.com/reference/java/lang/String name, boolean value) ` <br /> Set a feature for this `TransformerFactory` and `Transformer`s or `Template`s created by this factory. |
| ` abstract void` | ` https://developer.android.com/reference/javax/xml/transform/TransformerFactory#setURIResolver(javax.xml.transform.URIResolver)(https://developer.android.com/reference/javax/xml/transform/URIResolver resolver) ` Set an object that is used by default during the transformation to resolve URIs used in document(), xsl:import, or xsl:include. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Protected constructors

### TransformerFactory

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected TransformerFactory ()
```

Default constructor is protected on purpose.

<br />

## Public methods

### getAssociatedStylesheet

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Source getAssociatedStylesheet (Source source, 
                String media, 
                String title, 
                String charset)
```

<br />

Get the stylesheet specification(s) associated with the XML `Source` document via the [xml-stylesheet processing instruction](http://www.w3.org/TR/xml-stylesheet/) that match the given criteria. Note that it is possible to return several stylesheets, in which case they are applied as if they were a list of imports or cascades in a single stylesheet.

<br />

<br />

| Parameters ||
|---|---|
| `source` | `Source`: The XML source document. <br /> |
| `media` | `String`: The media attribute to be matched. May be null, in which case the preferred templates will be used (i.e. alternate = no). <br /> |
| `title` | `String`: The value of the title attribute to match. May be null. <br /> |
| `charset` | `String`: The value of the charset attribute to match. May be null. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/Source` | A `Source` `Object` suitable for passing to the `TransformerFactory`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException` | An `Exception` is thrown if an error occurs during parsing of the `source`. |

**See also:**

- [Associating Style Sheets with XML documents Version 1.0](http://www.w3.org/TR/xml-stylesheet/)

### getAttribute

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Object getAttribute (String name)
```

Allows the user to retrieve specific attributes on the underlying implementation. An `IllegalArgumentException` is thrown if the underlying implementation doesn't recognize the attribute.

<br />

| Parameters ||
|---|---|
| `name` | `String`: The name of the attribute. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/Object` | value The value of the attribute. <br /> |

### getErrorListener

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract ErrorListener getErrorListener ()
```

Get the error event handler for the TransformerFactory.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/ErrorListener` | The current error handler, which should never be null. <br /> |

### getFeature

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean getFeature (String name)
```

Look up the value of a feature.

Feature names are fully qualified `https://developer.android.com/reference/java/net/URI`s. Implementations may define their own features. `false` is returned if this `TransformerFactory` or the `Transformer`s or `Template`s it creates cannot support the feature. It is possible for an `TransformerFactory` to expose a feature value but be unable to change its state.

<br />

<br />

| Parameters ||
|---|---|
| `name` | `String`: Feature name. <br /> |

| Returns ||
|---|---|
| `boolean` | The current state of the feature, `true` or `false`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | If the `name` parameter is null. |

### getURIResolver

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract URIResolver getURIResolver ()
```

Get the object that is used by default during the transformation to resolve URIs used in document(), xsl:import, or xsl:include.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/URIResolver` | The URIResolver that was set with setURIResolver. <br /> |

### newInstance

Added in [API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static TransformerFactory newInstance (String factoryClassName, 
                ClassLoader classLoader)
```

Returns an instance of the named implementation of `TransformerFactory`.

<br />

| Parameters ||
|---|---|
| `factoryClassName` | `String` <br /> |
| `classLoader` | `ClassLoader` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerFactory` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerFactoryConfigurationError` | if `factoryClassName` is not available or cannot be instantiated. |

### newInstance

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static TransformerFactory newInstance ()
```

Returns Android's implementation of `TransformerFactory`. Unlike other Java implementations, this method does not consult system properties, properties files, or the services API.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerFactory` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerFactoryConfigurationError` | never. Included for API compatibility with other Java implementations. |

### newTemplates

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Templates newTemplates (Source source)
```

Process the Source into a Templates object, which is a a compiled representation of the source. This Templates object may then be used concurrently across multiple threads. Creating a Templates object allows the TransformerFactory to do detailed performance optimization of transformation instructions, without penalizing runtime transformation.

<br />

| Parameters ||
|---|---|
| `source` | `Source`: An object that holds a URL, input stream, etc. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/Templates` | A Templates object capable of being used for transformation purposes, never null. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException` | May throw this during the parse when it is constructing the Templates object and fails. |

### newTransformer

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Transformer newTransformer (Source source)
```

<br />

Process the `Source` into a `Transformer` `Object`. The `Source` is an XSLT document that conforms to [XSL Transformations (XSLT) Version 1.0](http://www.w3.org/TR/xslt). Care must be taken not to use this `Transformer` in multiple `Thread`s running concurrently. Different `TransformerFactories` can be used concurrently by different `Thread`s.

<br />

<br />

| Parameters ||
|---|---|
| `source` | `Source`: `Source ` of XSLT document used to create `Transformer`. Examples of XML `Source`s include `https://developer.android.com/reference/javax/xml/transform/stream/StreamSource`, `https://developer.android.com/reference/javax/xml/transform/sax/SAXSource` and `https://developer.android.com/reference/javax/xml/transform/dom/DOMSource`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/Transformer` | A `Transformer` object that may be used to perform a transformation in a single `Thread`, never `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException` | Thrown if there are errors when parsing the `Source` or it is not possible to create a `Transformer` instance. |

**See also:**

- [XSL Transformations (XSLT) Version 1.0](http://www.w3.org/TR/xslt)

### newTransformer

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Transformer newTransformer ()
```

<br />

Create a new `Transformer` that performs a copy of the `Source` to the `Result`. i.e. the "*identity transform*".

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/Transformer` | A Transformer object that may be used to perform a transformation in a single thread, never null. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException` | Thrown if it is not possible to create a `Transformer` instance. |

### setAttribute

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void setAttribute (String name, 
                Object value)
```

Allows the user to set specific attributes on the underlying implementation. An attribute in this context is defined to be an option that the implementation provides. An `IllegalArgumentException` is thrown if the underlying implementation doesn't recognize the attribute.

<br />

| Parameters ||
|---|---|
| `name` | `String`: The name of the attribute. <br /> |
| `value` | `Object`: The value of the attribute. <br /> |

### setErrorListener

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void setErrorListener (ErrorListener listener)
```

Set the error event listener for the TransformerFactory, which is used for the processing of transformation instructions, and not for the transformation itself. An `IllegalArgumentException` is thrown if the `ErrorListener` listener is `null`.

<br />

| Parameters ||
|---|---|
| `listener` | `ErrorListener`: The new error listener. <br /> |

### setFeature

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void setFeature (String name, 
                boolean value)
```

<br />

Set a feature for this `TransformerFactory` and `Transformer`s or `Template`s created by this factory.

Feature names are fully qualified `https://developer.android.com/reference/java/net/URI`s. Implementations may define their own features. An `https://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException` is thrown if this `TransformerFactory` or the `Transformer`s or `Template`s it creates cannot support the feature. It is possible for an `TransformerFactory` to expose a feature value but be unable to change its state.

All implementations are required to support the `https://developer.android.com/reference/javax/xml/XMLConstants#FEATURE_SECURE_PROCESSING` feature. When the feature is:

- `true`: the implementation will limit XML processing to conform to implementation limits and behave in a secure fashion as defined by the implementation. Examples include resolving user defined style sheets and functions. If XML processing is limited for security reasons, it will be reported via a call to the registered `https://developer.android.com/reference/javax/xml/transform/ErrorListener#fatalError(javax.xml.transform.TransformerException)`. See `https://developer.android.com/reference/javax/xml/transform/TransformerFactory#setErrorListener(javax.xml.transform.ErrorListener)`.
- `false`: the implementation will processing XML according to the XML specifications without regard to possible implementation limits.

<br />

<br />

| Parameters ||
|---|---|
| `name` | `String`: Feature name. <br /> |
| `value` | `boolean`: Is feature state `true` or `false`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | If the `name` parameter is null. |
| `https://developer.android.com/reference/javax/xml/transform/TransformerConfigurationException` | if this `TransformerFactory` or the `Transformer`s or `Template`s it creates cannot support this feature. |

### setURIResolver

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void setURIResolver (URIResolver resolver)
```

Set an object that is used by default during the transformation to resolve URIs used in document(), xsl:import, or xsl:include.

<br />

| Parameters ||
|---|---|
| `resolver` | `URIResolver`: An object that implements the URIResolver interface, or null. <br /> |