# Class StAXSource

java.lang.Object
javax.xml.transform.stax.StAXSource

All Implemented Interfaces:
  `Source`

public class StAXSource extends Object implements Source

Acts as a holder for an XML `Source` in the form of a StAX reader,i.e. `XMLStreamReader` or `XMLEventReader`. `StAXSource` can be used in all cases that accept a `Source`, e.g. `Transformer`, `Validator` which accept `Source` as input.

`StAXSource`s are consumed during processing and are not reusable.

Since:
  1.6
See Also:
  - JSR 173: Streaming API for XML
  - `XMLStreamReader`
  - `XMLEventReader`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `FEATURE`
  If `TransformerFactory.getFeature(String name)` returns true when passed this value as an argument, the Transformer supports Source input of this type.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StAXSource(XMLEventReader xmlEventReader)`
  Creates a new instance of a `StAXSource` by supplying an `XMLEventReader`.
  `StAXSource(XMLStreamReader xmlStreamReader)`
  Creates a new instance of a `StAXSource` by supplying an `XMLStreamReader`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getSystemId()`
  Get the system identifier used by this `StAXSource`.
  `XMLEventReader`
  `getXMLEventReader()`
  Get the `XMLEventReader` used by this `StAXSource`.
  `XMLStreamReader`
  `getXMLStreamReader()`
  Get the `XMLStreamReader` used by this `StAXSource`.
  `boolean`
  `isEmpty()`
  Indicates whether the `StAXSource` object is empty.
  `void`
  `setSystemId(String systemId)`
  In the context of a `StAXSource`, it is not appropriate to explicitly set the system identifier.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(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`
  `wait(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.

- ## Field Details

  - ### FEATURE

    public static final String FEATURE
    If `TransformerFactory.getFeature(String name)` returns true when passed this value as an argument, the Transformer supports Source input of this type.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### StAXSource

    public StAXSource(XMLEventReader xmlEventReader) throws XMLStreamException

    Creates a new instance of a `StAXSource` by supplying an `XMLEventReader`.

    `XMLEventReader` must be a non-`null` reference.

    `XMLEventReader` must be in `XMLStreamConstants.START_DOCUMENT` or `XMLStreamConstants.START_ELEMENT` state.

    Parameters:
      `xmlEventReader` - `XMLEventReader` used to create this `StAXSource`.
    Throws:
      `XMLStreamException` - If `xmlEventReader` access throws an `Exception`.
      `IllegalArgumentException` - If `xmlEventReader` == `null`.
      `IllegalStateException` - If `xmlEventReader` is not in `XMLStreamConstants.START_DOCUMENT` or `XMLStreamConstants.START_ELEMENT` state.

  - ### StAXSource

    public StAXSource(XMLStreamReader xmlStreamReader)

    Creates a new instance of a `StAXSource` by supplying an `XMLStreamReader`.

    `XMLStreamReader` must be a non-`null` reference.

    `XMLStreamReader` must be in `XMLStreamConstants.START_DOCUMENT` or `XMLStreamConstants.START_ELEMENT` state.

    Parameters:
      `xmlStreamReader` - `XMLStreamReader` used to create this `StAXSource`.
    Throws:
      `IllegalArgumentException` - If `xmlStreamReader` == `null`.
      `IllegalStateException` - If `xmlStreamReader` is not in `XMLStreamConstants.START_DOCUMENT` or `XMLStreamConstants.START_ELEMENT` state.

- ## Method Details

  - ### getXMLEventReader

    public XMLEventReader getXMLEventReader()

    Get the `XMLEventReader` used by this `StAXSource`.

    `XMLEventReader` will be `null`. if this `StAXSource` was created with a `XMLStreamReader`.

    Returns:
      `XMLEventReader` used by this `StAXSource`.

  - ### getXMLStreamReader

    public XMLStreamReader getXMLStreamReader()

    Get the `XMLStreamReader` used by this `StAXSource`.

    `XMLStreamReader` will be `null` if this `StAXSource` was created with a `XMLEventReader`.

    Returns:
      `XMLStreamReader` used by this `StAXSource`.

  - ### setSystemId

    public void setSystemId(String systemId)

    In the context of a `StAXSource`, it is not appropriate to explicitly set the system identifier. The `XMLStreamReader` or `XMLEventReader` used to construct this `StAXSource` determines the system identifier of the XML source.

    An `UnsupportedOperationException` is always thrown by this method.

    Specified by:
      `setSystemId` in interface `Source`
    Parameters:
      `systemId` - Ignored.
    Throws:
      `UnsupportedOperationException` - Is always thrown by this method.

  - ### getSystemId

    public String getSystemId()

    Get the system identifier used by this `StAXSource`.

    The `XMLStreamReader` or `XMLEventReader` used to construct this `StAXSource` is queried to determine the system identifier of the XML source.

    The system identifier may be `null` or an empty `""` `String`.

    Specified by:
      `getSystemId` in interface `Source`
    Returns:
      System identifier used by this `StAXSource`.

  - ### isEmpty

    public boolean isEmpty()
    Indicates whether the `StAXSource` object is empty. Since a `StAXSource` object can never be empty, this method always returns false.
    Specified by:
      `isEmpty` in interface `Source`
    Returns:
      unconditionally false