# Class QName

java.lang.Object
javax.xml.namespace.QName

All Implemented Interfaces:
  `Serializable`

public class QName extends Object implements Serializable

`QName` represents a qualified name as defined in the XML specifications: XML Schema Part2: Datatypes specification, Namespaces in XML.

The value of a `QName` contains a Namespace URI, local part and prefix.

The prefix is included in `QName` to retain lexical information when present in an `XML input source`. The prefix is NOT used in `QName.equals(Object)` or to compute the `QName.hashCode()`. Equality and the hash code are defined using only the Namespace URI and local part.

If not specified, the Namespace URI is set to `XMLConstants.NULL_NS_URI`. If not specified, the prefix is set to `XMLConstants.DEFAULT_NS_PREFIX`.

`QName` is immutable.

Since:
  1.5
See Also:
  - XML Schema Part2: Datatypes specification
  - Namespaces in XML
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `QName(String localPart)`
  `QName` constructor specifying the local part.
  `QName(String namespaceURI, String localPart)`
  `QName` constructor specifying the Namespace URI and local part.
  `QName(String namespaceURI, String localPart, String prefix)`
  `QName` constructor specifying the Namespace URI, local part and prefix.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final boolean`
  `equals(Object objectToTest)`
  Test this `QName` for equality with another `Object`.
  `String`
  `getLocalPart()`
  Get the local part of this `QName`.
  `String`
  `getNamespaceURI()`
  Get the Namespace URI of this `QName`.
  `String`
  `getPrefix()`
  Get the prefix of this `QName`.
  `final int`
  `hashCode()`
  Generate the hash code for this `QName`.
  `String`
  `toString()`
  Returns the string representation of this `QName`.
  `static QName`
  `valueOf(String qNameAsString)`
  Returns a `QName` from its string representation.

  ### Methods declared in class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `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`.
  `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.
  `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.

- ## Constructor Details

  - ### QName

    public QName(String namespaceURI, String localPart)

    `QName` constructor specifying the Namespace URI and local part.

    If the Namespace URI is `null`, it is set to `XMLConstants.NULL_NS_URI`. This value represents no explicitly defined Namespace as defined by the Namespaces in XML specification. This action preserves compatible behavior with QName 1.0. Explicitly providing the `XMLConstants.NULL_NS_URI` value is the preferred coding style.

    If the local part is `null` an `IllegalArgumentException` is thrown. A local part of "" is allowed to preserve compatible behavior with QName 1.0.

    When using this constructor, the prefix is set to `XMLConstants.DEFAULT_NS_PREFIX`.

    The Namespace URI is not validated as a URI reference. The local part is not validated as a NCName as specified in Namespaces in XML.

    Parameters:
      `namespaceURI` - Namespace URI of the `QName`
      `localPart` - local part of the `QName`
    Throws:
      `IllegalArgumentException` - When `localPart` is `null`
    See Also:
      - `QName(String namespaceURI, String localPart, String prefix)`

  - ### QName

    public QName(String namespaceURI, String localPart, String prefix)

    `QName` constructor specifying the Namespace URI, local part and prefix.

    If the Namespace URI is `null`, it is set to `XMLConstants.NULL_NS_URI`. This value represents no explicitly defined Namespace as defined by the Namespaces in XML specification. This action preserves compatible behavior with QName 1.0. Explicitly providing the `XMLConstants.NULL_NS_URI` value is the preferred coding style.

    If the local part is `null` an `IllegalArgumentException` is thrown. A local part of "" is allowed to preserve compatible behavior with QName 1.0.

    If the prefix is `null`, an `IllegalArgumentException` is thrown. Use `XMLConstants.DEFAULT_NS_PREFIX` to explicitly indicate that no prefix is present or the prefix is not relevant.

    The Namespace URI is not validated as a URI reference. The local part and prefix are not validated as a NCName as specified in Namespaces in XML.

    Parameters:
      `namespaceURI` - Namespace URI of the `QName`
      `localPart` - local part of the `QName`
      `prefix` - prefix of the `QName`
    Throws:
      `IllegalArgumentException` - When `localPart` or `prefix` is `null`

  - ### QName

    public QName(String localPart)

    `QName` constructor specifying the local part.

    If the local part is `null` an `IllegalArgumentException` is thrown. A local part of "" is allowed to preserve compatible behavior with QName 1.0.

    When using this constructor, the Namespace URI is set to `XMLConstants.NULL_NS_URI` and the prefix is set to `XMLConstants.DEFAULT_NS_PREFIX`.

    In an XML context, all Element and Attribute names exist in the context of a Namespace. Making this explicit during the construction of a `QName` helps prevent hard to diagnosis XML validity errors. The constructors `QName(String namespaceURI, String localPart)` and `QName(String namespaceURI, String localPart, String prefix)` are preferred.

    The local part is not validated as a NCName as specified in Namespaces in XML.

    Parameters:
      `localPart` - local part of the `QName`
    Throws:
      `IllegalArgumentException` - When `localPart` is `null`
    See Also:
      - `QName(String namespaceURI, String localPart)`
      - `QName(String namespaceURI, String localPart, String prefix)`

- ## Method Details

  - ### getNamespaceURI

    public String getNamespaceURI()

    Get the Namespace URI of this `QName`.

    Returns:
      Namespace URI of this `QName`

  - ### getLocalPart

    public String getLocalPart()

    Get the local part of this `QName`.

    Returns:
      local part of this `QName`

  - ### getPrefix

    public String getPrefix()

    Get the prefix of this `QName`.

    The prefix assigned to a `QName` might NOT be valid in a different context. For example, a `QName` may be assigned a prefix in the context of parsing a document but that prefix may be invalid in the context of a different document.

    Returns:
      prefix of this `QName`

  - ### equals

    public final boolean equals(Object objectToTest)

    Test this `QName` for equality with another `Object`.

    If the `Object` to be tested is not a `QName` or is `null`, then this method returns `false`.

    Two `QName`s are considered equal if and only if both the Namespace URI and local part are equal. This method uses `String.equals()` to check equality of the Namespace URI and local part. The prefix is NOT used to determine equality.

    This method satisfies the general contract of `Object.equals(Object)`

    Overrides:
      `equals` in class `Object`
    Parameters:
      `objectToTest` - the `Object` to test for equality with this `QName`
    Returns:
      `true` if the given `Object` is equal to this `QName` else `false`
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### hashCode

    public final int hashCode()

    Generate the hash code for this `QName`.

    The hash code is calculated using both the Namespace URI and the local part of the `QName`. The prefix is NOT used to calculate the hash code.

    This method satisfies the general contract of `Object.hashCode()`.

    Overrides:
      `hashCode` in class `Object`
    Returns:
      hash code for this `QName` `Object`
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(Object)`

  - ### toString

    public String toString()
    Returns the string representation of this `QName`. The format is:

            {NamespaceURI}LocalPart

    If `NamespaceURI` is `null`, only `LocalPart` is returned.
    Overrides:
      `toString` in class `Object`
    API Note:
      The `Prefix` is not returned in the string representation.
    Returns:
      the string representation of this `QName`

  - ### valueOf

    public static QName valueOf(String qNameAsString)
    Returns a `QName` from its string representation. The string representation must be in the format returned by `toString()`:

            {NamespaceURI}LocalPart

    Since the `Prefix` is not represented in the string form, it will be set to `XMLConstants.DEFAULT_NS_PREFIX`.
    API Note:
      This method does not perform full validation of the resulting `QName`. The `NamespaceURI` is not validated as a URI reference. The `LocalPart` is not validated as a NCName as specified in Namespaces in XML.
    Parameters:
      `qNameAsString` - the string representation of the `QName`
    Returns:
      a `QName` from its string representation
    Throws:
      `IllegalArgumentException` - if `qNameAsString` is `null` or malformed
    See Also:
      - `QName.toString()`