# Class IIOMetadataNode

java.lang.Object
javax.imageio.metadata.IIOMetadataNode

All Implemented Interfaces:
  `Element, Node, NodeList`

public class IIOMetadataNode extends Object implements Element, NodeList
A class representing a node in a meta-data tree, which implements the `org.w3c.dom.Element` interface and additionally allows for the storage of non-textual objects via the `getUserObject` and `setUserObject` methods.

This class is not intended to be used for general XML processing. In particular, `Element` nodes created within the Image I/O API are not compatible with those created by Sun's standard implementation of the `org.w3.dom` API. In particular, the implementation is tuned for simple uses and may not perform well for intensive processing.

Namespaces are ignored in this implementation. The terms "tag name" and "node name" are always considered to be synonymous. Note: The DOM Level 3 specification added a number of new methods to the `Node`, `Element` and `Attr` interfaces that are not of value to the `IIOMetadataNode` implementation or specification. Calling such methods on an `IIOMetadataNode`, or an `Attr` instance returned from an `IIOMetadataNode` will result in a `DOMException` being thrown.

See Also:
  - `IIOMetadata.getAsTree(String)`
  - `IIOMetadata.setFromTree(String, Node)`
  - `IIOMetadata.mergeTree(String, Node)`

## Field Summary

### Fields declared in interface Node

`ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

## Constructor Summary

Constructors
Constructor
Description
`IIOMetadataNode()`
Constructs an empty `IIOMetadataNode`.
`IIOMetadataNode(String nodeName)`
Constructs an `IIOMetadataNode` with a given node name.

## Method Summary

Modifier and Type
Method
Description
`Node`
`appendChild(Node newChild)`
Adds the node `newChild` to the end of the list of children of this node.
`Node`
`cloneNode(boolean deep)`
Returns a duplicate of this node.
`short`
`compareDocumentPosition(Node other)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`String`
`getAttribute(String name)`
Retrieves an attribute value by name.
`Attr`
`getAttributeNode(String name)`
Retrieves an attribute node by name.
`Attr`
`getAttributeNodeNS(String namespaceURI, String localName)`
Equivalent to `getAttributeNode(localName)`.
`String`
`getAttributeNS(String namespaceURI, String localName)`
Equivalent to `getAttribute(localName)`.
`NamedNodeMap`
`getAttributes()`
Returns a `NamedNodeMap` containing the attributes of this node.
`String`
`getBaseURI()`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`NodeList`
`getChildNodes()`
Returns a `NodeList` that contains all children of this node.
`NodeList`
`getElementsByTagName(String name)`
Returns a `NodeList` of all descendant `Elements` with a given tag name, in document order.
`NodeList`
`getElementsByTagNameNS(String namespaceURI, String localName)`
Equivalent to `getElementsByTagName(localName)`.
`Object`
`getFeature(String feature, String version)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`Node`
`getFirstChild()`
Returns the first child of this node, or `null` if the node has no children.
`Node`
`getLastChild()`
Returns the last child of this node, or `null` if the node has no children.
`int`
`getLength()`
The number of nodes in the list.
`String`
`getLocalName()`
Equivalent to `getNodeName`.
`String`
`getNamespaceURI()`
Returns `null`, since namespaces are not supported.
`Node`
`getNextSibling()`
Returns the next sibling of this node, or `null` if the node has no next sibling.
`String`
`getNodeName()`
Returns the node name associated with this node.
`short`
`getNodeType()`
Returns the node type, which is always `ELEMENT_NODE`.
`String`
`getNodeValue()`
Returns the value associated with this node.
`Document`
`getOwnerDocument()`
Returns `null`, since `IIOMetadataNode`s do not belong to any `Document`.
`Node`
`getParentNode()`
Returns the parent of this node.
`String`
`getPrefix()`
Returns `null`, since namespaces are not supported.
`Node`
`getPreviousSibling()`
Returns the previous sibling of this node, or `null` if this node has no previous sibling.
`TypeInfo`
`getSchemaTypeInfo()`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`String`
`getTagName()`
Equivalent to `getNodeName`.
`String`
`getTextContent()`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`Object`
`getUserData(String key)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`Object`
`getUserObject()`
Returns the `Object` value associated with this node.
`boolean`
`hasAttribute(String name)`
Returns `true` when an attribute with a given name is specified on this element or has a default value, `false` otherwise.
`boolean`
`hasAttributeNS(String namespaceURI, String localName)`
Equivalent to `hasAttribute(localName)`.
`boolean`
`hasAttributes()`
Returns whether this node (if it is an element) has any attributes.
`boolean`
`hasChildNodes()`
Returns `true` if this node has child nodes.
`Node`
`insertBefore(Node newChild, Node refChild)`
Inserts the node `newChild` before the existing child node `refChild`.
`boolean`
`isDefaultNamespace(String namespaceURI)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`boolean`
`isEqualNode(Node node)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`boolean`
`isSameNode(Node node)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`boolean`
`isSupported(String feature, String version)`
Returns `false` since DOM features are not supported.
`Node`
`item(int index)`
Returns the `index`th item in the collection.
`String`
`lookupNamespaceURI(String prefix)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`String`
`lookupPrefix(String namespaceURI)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`void`
`normalize()`
Does nothing, since `IIOMetadataNode`s do not contain `Text` children.
`void`
`removeAttribute(String name)`
Removes an attribute by name.
`Attr`
`removeAttributeNode(Attr oldAttr)`
Removes the specified attribute node.
`void`
`removeAttributeNS(String namespaceURI, String localName)`
Equivalent to `removeAttribute(localName)`.
`Node`
`removeChild(Node oldChild)`
Removes the child node indicated by `oldChild` from the list of children, and returns it.
`Node`
`replaceChild(Node newChild, Node oldChild)`
Replaces the child node `oldChild` with `newChild` in the list of children, and returns the `oldChild` node.
`void`
`setAttribute(String name, String value)`
Adds a new attribute.
`Attr`
`setAttributeNode(Attr newAttr)`
Adds a new attribute node.
`Attr`
`setAttributeNodeNS(Attr newAttr)`
Equivalent to `setAttributeNode(newAttr)`.
`void`
`setAttributeNS(String namespaceURI, String qualifiedName, String value)`
Equivalent to `setAttribute(qualifiedName, value)`.
`void`
`setIdAttribute(String name, boolean isId)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`void`
`setIdAttributeNode(Attr idAttr, boolean isId)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`void`
`setIdAttributeNS(String namespaceURI, String localName, boolean isId)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`void`
`setNodeValue(String nodeValue)`
Sets the `String` value associated with this node.
`void`
`setPrefix(String prefix)`
Does nothing, since namespaces are not supported.
`void`
`setTextContent(String textContent)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`Object`
`setUserData(String key, Object data, UserDataHandler handler)`
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.
`void`
`setUserObject(Object userObject)`
Sets the value associated with this node.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### IIOMetadataNode

public IIOMetadataNode()
Constructs an empty `IIOMetadataNode`.

### IIOMetadataNode

public IIOMetadataNode(String nodeName)
Constructs an `IIOMetadataNode` with a given node name.

Parameters:
  `nodeName` - the name of the node, as a `String`.

## Method Details

### getNodeName

public String getNodeName()
Returns the node name associated with this node.

Specified by:
  `getNodeName` in interface `Node`
Returns:
  the node name, as a `String`.

### getNodeValue

public String getNodeValue()
Returns the value associated with this node.

Specified by:
  `getNodeValue` in interface `Node`
Returns:
  the node value, as a `String`.

### setNodeValue

public void setNodeValue(String nodeValue)
Sets the `String` value associated with this node.

Specified by:
  `setNodeValue` in interface `Node`

### getNodeType

public short getNodeType()
Returns the node type, which is always `ELEMENT_NODE`.

Specified by:
  `getNodeType` in interface `Node`
Returns:
  the `short` value `ELEMENT_NODE`.

### getParentNode

public Node getParentNode()
Returns the parent of this node. A `null` value indicates that the node is the root of its own tree. To add a node to an existing tree, use one of the `insertBefore`, `replaceChild`, or `appendChild` methods.

Specified by:
  `getParentNode` in interface `Node`
Returns:
  the parent, as a `Node`.
See Also:
  - `insertBefore(Node, Node)`
  - `replaceChild(Node, Node)`
  - `appendChild(Node)`

### getChildNodes

public NodeList getChildNodes()
Returns a `NodeList` that contains all children of this node. If there are no children, this is a `NodeList` containing no nodes.

Specified by:
  `getChildNodes` in interface `Node`
Returns:
  the children as a `NodeList`

### getFirstChild

public Node getFirstChild()
Returns the first child of this node, or `null` if the node has no children.

Specified by:
  `getFirstChild` in interface `Node`
Returns:
  the first child, as a `Node`, or `null`

### getLastChild

public Node getLastChild()
Returns the last child of this node, or `null` if the node has no children.

Specified by:
  `getLastChild` in interface `Node`
Returns:
  the last child, as a `Node`, or `null`.

### getPreviousSibling

public Node getPreviousSibling()
Returns the previous sibling of this node, or `null` if this node has no previous sibling.

Specified by:
  `getPreviousSibling` in interface `Node`
Returns:
  the previous sibling, as a `Node`, or `null`.

### getNextSibling

public Node getNextSibling()
Returns the next sibling of this node, or `null` if the node has no next sibling.

Specified by:
  `getNextSibling` in interface `Node`
Returns:
  the next sibling, as a `Node`, or `null`.

### getAttributes

public NamedNodeMap getAttributes()
Returns a `NamedNodeMap` containing the attributes of this node.

Specified by:
  `getAttributes` in interface `Node`
Returns:
  a `NamedNodeMap` containing the attributes of this node.

### getOwnerDocument

public Document getOwnerDocument()
Returns `null`, since `IIOMetadataNode`s do not belong to any `Document`.

Specified by:
  `getOwnerDocument` in interface `Node`
Returns:
  `null`.

### insertBefore

public Node insertBefore(Node newChild, Node refChild)
Inserts the node `newChild` before the existing child node `refChild`. If `refChild` is `null`, insert `newChild` at the end of the list of children.

Specified by:
  `insertBefore` in interface `Node`
Parameters:
  `newChild` - the `Node` to insert.
  `refChild` - the reference `Node`.
Returns:
  the node being inserted.
Throws:
  `IllegalArgumentException` - if `newChild` is `null`.

### replaceChild

public Node replaceChild(Node newChild, Node oldChild)
Replaces the child node `oldChild` with `newChild` in the list of children, and returns the `oldChild` node.

Specified by:
  `replaceChild` in interface `Node`
Parameters:
  `newChild` - the `Node` to insert.
  `oldChild` - the `Node` to be replaced.
Returns:
  the node replaced.
Throws:
  `IllegalArgumentException` - if `newChild` is `null`.

### removeChild

public Node removeChild(Node oldChild)
Removes the child node indicated by `oldChild` from the list of children, and returns it.

Specified by:
  `removeChild` in interface `Node`
Parameters:
  `oldChild` - the `Node` to be removed.
Returns:
  the node removed.
Throws:
  `IllegalArgumentException` - if `oldChild` is `null`.

### appendChild

public Node appendChild(Node newChild)
Adds the node `newChild` to the end of the list of children of this node.

Specified by:
  `appendChild` in interface `Node`
Parameters:
  `newChild` - the `Node` to insert.
Returns:
  the node added.
Throws:
  `IllegalArgumentException` - if `newChild` is `null`.

### hasChildNodes

public boolean hasChildNodes()
Returns `true` if this node has child nodes.

Specified by:
  `hasChildNodes` in interface `Node`
Returns:
  `true` if this node has children.

### cloneNode

public Node cloneNode(boolean deep)
Returns a duplicate of this node. The duplicate node has no parent (`getParentNode` returns `null`). If a shallow clone is being performed (`deep` is `false`), the new node will not have any children or siblings. If a deep clone is being performed, the new node will form the root of a complete cloned subtree.

Specified by:
  `cloneNode` in interface `Node`
Parameters:
  `deep` - if `true`, recursively clone the subtree under the specified node; if `false`, clone only the node itself.
Returns:
  the duplicate node.

### normalize

public void normalize()
Does nothing, since `IIOMetadataNode`s do not contain `Text` children.

Specified by:
  `normalize` in interface `Node`

### isSupported

public boolean isSupported(String feature, String version)
Returns `false` since DOM features are not supported.

Specified by:
  `isSupported` in interface `Node`
Parameters:
  `feature` - a `String`, which is ignored.
  `version` - a `String`, which is ignored.
Returns:
  `false`.

### getNamespaceURI

public String getNamespaceURI() throws DOMException
Returns `null`, since namespaces are not supported.

Specified by:
  `getNamespaceURI` in interface `Node`
Throws:
  `DOMException`

### getPrefix

public String getPrefix()
Returns `null`, since namespaces are not supported.

Specified by:
  `getPrefix` in interface `Node`
Returns:
  `null`.
See Also:
  - `setPrefix(String)`

### setPrefix

public void setPrefix(String prefix)
Does nothing, since namespaces are not supported.

Specified by:
  `setPrefix` in interface `Node`
Parameters:
  `prefix` - a `String`, which is ignored.
See Also:
  - `getPrefix()`

### getLocalName

public String getLocalName()
Equivalent to `getNodeName`.

Specified by:
  `getLocalName` in interface `Node`
Returns:
  the node name, as a `String`.

### getTagName

public String getTagName()
Equivalent to `getNodeName`.

Specified by:
  `getTagName` in interface `Element`
Returns:
  the node name, as a `String`

### getAttribute

public String getAttribute(String name)
Retrieves an attribute value by name.

Specified by:
  `getAttribute` in interface `Element`
Parameters:
  `name` - The name of the attribute to retrieve.
Returns:
  The `Attr` value as a string, or the empty string if that attribute does not have a specified or default value.

### getAttributeNS

public String getAttributeNS(String namespaceURI, String localName)
Equivalent to `getAttribute(localName)`.

Specified by:
  `getAttributeNS` in interface `Element`
Parameters:
  `namespaceURI` - The namespace URI of the attribute to retrieve.
  `localName` - The local name of the attribute to retrieve.
Returns:
  The `Attr` value as a string, or the empty string if that attribute does not have a specified or default value.
See Also:
  - `setAttributeNS(String, String, String)`

### setAttribute

public void setAttribute(String name, String value)
Description copied from interface: `Element`
Adds a new attribute. If an attribute with that name is already present in the element, its value is changed to be that of the value parameter. This value is a simple string; it is not parsed as it is being set. So any markup (such as syntax to be recognized as an entity reference) is treated as literal text, and needs to be appropriately escaped by the implementation when it is written out. In order to assign an attribute value that contains entity references, the user must create an `Attr` node plus any `Text` and `EntityReference` nodes, build the appropriate subtree, and use `setAttributeNode` to assign it as the value of an attribute.
To set an attribute with a qualified name and namespace URI, use the `setAttributeNS` method.

Specified by:
  `setAttribute` in interface `Element`
Parameters:
  `name` - The name of the attribute to create or alter.
  `value` - Value to set in string form.

### setAttributeNS

public void setAttributeNS(String namespaceURI, String qualifiedName, String value)
Equivalent to `setAttribute(qualifiedName, value)`.

Specified by:
  `setAttributeNS` in interface `Element`
Parameters:
  `namespaceURI` - The namespace URI of the attribute to create or alter.
  `qualifiedName` - The qualified name of the attribute to create or alter.
  `value` - The value to set in string form.
See Also:
  - `getAttributeNS(String, String)`

### removeAttribute

public void removeAttribute(String name)
Description copied from interface: `Element`
Removes an attribute by name. If a default value for the removed attribute is defined in the DTD, a new attribute immediately appears with the default value as well as the corresponding namespace URI, local name, and prefix when applicable. The implementation may handle default values from other schemas similarly but applications should use `Document.normalizeDocument()` to guarantee this information is up-to-date.
If no attribute with this name is found, this method has no effect.
To remove an attribute by local name and namespace URI, use the `removeAttributeNS` method.

Specified by:
  `removeAttribute` in interface `Element`
Parameters:
  `name` - The name of the attribute to remove.

### removeAttributeNS

public void removeAttributeNS(String namespaceURI, String localName)
Equivalent to `removeAttribute(localName)`.

Specified by:
  `removeAttributeNS` in interface `Element`
Parameters:
  `namespaceURI` - The namespace URI of the attribute to remove.
  `localName` - The local name of the attribute to remove.

### getAttributeNode

public Attr getAttributeNode(String name)
Description copied from interface: `Element`
Retrieves an attribute node by name.
To retrieve an attribute node by qualified name and namespace URI, use the `getAttributeNodeNS` method.

Specified by:
  `getAttributeNode` in interface `Element`
Parameters:
  `name` - The name (`nodeName`) of the attribute to retrieve.
Returns:
  The `Attr` node with the specified name ( `nodeName`) or `null` if there is no such attribute.

### getAttributeNodeNS

public Attr getAttributeNodeNS(String namespaceURI, String localName)
Equivalent to `getAttributeNode(localName)`.

Specified by:
  `getAttributeNodeNS` in interface `Element`
Parameters:
  `namespaceURI` - The namespace URI of the attribute to retrieve.
  `localName` - The local name of the attribute to retrieve.
Returns:
  The `Attr` node with the specified attribute local name and namespace URI or `null` if there is no such attribute.
See Also:
  - `setAttributeNodeNS(Attr)`

### setAttributeNode

public Attr setAttributeNode(Attr newAttr) throws DOMException
Description copied from interface: `Element`
Adds a new attribute node. If an attribute with that name ( `nodeName`) is already present in the element, it is replaced by the new one. Replacing an attribute node by itself has no effect.
To add a new attribute node with a qualified name and namespace URI, use the `setAttributeNodeNS` method.

Specified by:
  `setAttributeNode` in interface `Element`
Parameters:
  `newAttr` - The `Attr` node to add to the attribute list.
Returns:
  If the `newAttr` attribute replaces an existing attribute, the replaced `Attr` node is returned, otherwise `null` is returned.
Throws:
  `DOMException` - WRONG_DOCUMENT_ERR: Raised if `newAttr` was created from a different document than the one that created the element.
  NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
  INUSE_ATTRIBUTE_ERR: Raised if `newAttr` is already an attribute of another `Element` object. The DOM user must explicitly clone `Attr` nodes to re-use them in other elements.

### setAttributeNodeNS

public Attr setAttributeNodeNS(Attr newAttr)
Equivalent to `setAttributeNode(newAttr)`.

Specified by:
  `setAttributeNodeNS` in interface `Element`
Parameters:
  `newAttr` - The `Attr` node to add to the attribute list.
Returns:
  If the `newAttr` attribute replaces an existing attribute with the same local name and namespace URI, the replaced `Attr` node is returned, otherwise `null` is returned.
See Also:
  - `getAttributeNodeNS(String, String)`

### removeAttributeNode

public Attr removeAttributeNode(Attr oldAttr)
Description copied from interface: `Element`
Removes the specified attribute node. If a default value for the removed `Attr` node is defined in the DTD, a new node immediately appears with the default value as well as the corresponding namespace URI, local name, and prefix when applicable. The implementation may handle default values from other schemas similarly but applications should use `Document.normalizeDocument()` to guarantee this information is up-to-date.

Specified by:
  `removeAttributeNode` in interface `Element`
Parameters:
  `oldAttr` - The `Attr` node to remove from the attribute list.
Returns:
  The `Attr` node that was removed.

### getElementsByTagName

public NodeList getElementsByTagName(String name)
Description copied from interface: `Element`
Returns a `NodeList` of all descendant `Elements` with a given tag name, in document order.

Specified by:
  `getElementsByTagName` in interface `Element`
Parameters:
  `name` - The name of the tag to match on. The special value "*" matches all tags.
Returns:
  A list of matching `Element` nodes.

### getElementsByTagNameNS

public NodeList getElementsByTagNameNS(String namespaceURI, String localName)
Equivalent to `getElementsByTagName(localName)`.

Specified by:
  `getElementsByTagNameNS` in interface `Element`
Parameters:
  `namespaceURI` - The namespace URI of the elements to match on. The special value "*" matches all namespaces.
  `localName` - The local name of the elements to match on. The special value "*" matches all local names.
Returns:
  A new `NodeList` object containing all the matched `Elements`.

### hasAttributes

public boolean hasAttributes()
Description copied from interface: `Node`
Returns whether this node (if it is an element) has any attributes.

Specified by:
  `hasAttributes` in interface `Node`
Returns:
  Returns `true` if this node has any attributes, `false` otherwise.

### hasAttribute

public boolean hasAttribute(String name)
Description copied from interface: `Element`
Returns `true` when an attribute with a given name is specified on this element or has a default value, `false` otherwise.

Specified by:
  `hasAttribute` in interface `Element`
Parameters:
  `name` - The name of the attribute to look for.
Returns:
  `true` if an attribute with the given name is specified on this element or has a default value, `false` otherwise.

### hasAttributeNS

public boolean hasAttributeNS(String namespaceURI, String localName)
Equivalent to `hasAttribute(localName)`.

Specified by:
  `hasAttributeNS` in interface `Element`
Parameters:
  `namespaceURI` - The namespace URI of the attribute to look for.
  `localName` - The local name of the attribute to look for.
Returns:
  `true` if an attribute with the given local name and namespace URI is specified or has a default value on this element, `false` otherwise.

### getLength

public int getLength()
Description copied from interface: `NodeList`
The number of nodes in the list. The range of valid child node indices is 0 to `length-1` inclusive.

Specified by:
  `getLength` in interface `NodeList`

### item

public Node item(int index)
Description copied from interface: `NodeList`
Returns the `index`th item in the collection. If `index` is greater than or equal to the number of nodes in the list, this returns `null`.

Specified by:
  `item` in interface `NodeList`
Parameters:
  `index` - Index into the collection.
Returns:
  The node at the `index`th position in the `NodeList`, or `null` if that is not a valid index.

### getUserObject

public Object getUserObject()
Returns the `Object` value associated with this node.

Returns:
  the user `Object`.
See Also:
  - `setUserObject(Object)`

### setUserObject

public void setUserObject(Object userObject)
Sets the value associated with this node.

Parameters:
  `userObject` - the user `Object`.
See Also:
  - `getUserObject()`

### setIdAttribute

public void setIdAttribute(String name, boolean isId) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `setIdAttribute` in interface `Element`
Parameters:
  `name` - The name of the attribute.
  `isId` - Whether the attribute is a of type ID.
Throws:
  `DOMException` - always.

### setIdAttributeNS

public void setIdAttributeNS(String namespaceURI, String localName, boolean isId) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `setIdAttributeNS` in interface `Element`
Parameters:
  `namespaceURI` - The namespace URI of the attribute.
  `localName` - The local name of the attribute.
  `isId` - Whether the attribute is a of type ID.
Throws:
  `DOMException` - always.

### setIdAttributeNode

public void setIdAttributeNode(Attr idAttr, boolean isId) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `setIdAttributeNode` in interface `Element`
Parameters:
  `idAttr` - The attribute node.
  `isId` - Whether the attribute is a of type ID.
Throws:
  `DOMException` - always.

### getSchemaTypeInfo

public TypeInfo getSchemaTypeInfo() throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `getSchemaTypeInfo` in interface `Element`
Throws:
  `DOMException` - always.

### setUserData

public Object setUserData(String key, Object data, UserDataHandler handler) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `setUserData` in interface `Node`
Parameters:
  `key` - The key to associate the object to.
  `data` - The object to associate to the given key, or `null` to remove any existing association to that key.
  `handler` - The handler to associate to that key, or `null`.
Returns:
  Returns the `DOMUserData` previously associated to the given key on this node, or `null` if there was none.
Throws:
  `DOMException` - always.

### getUserData

public Object getUserData(String key) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `getUserData` in interface `Node`
Parameters:
  `key` - The key the object is associated to.
Returns:
  Returns the `DOMUserData` associated to the given key on this node, or `null` if there was none.
Throws:
  `DOMException` - always.

### getFeature

public Object getFeature(String feature, String version) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `getFeature` in interface `Node`
Parameters:
  `feature` - The name of the feature requested. Note that any plus sign "+" prepended to the name of the feature will be ignored since it is not significant in the context of this method.
  `version` - This is the version number of the feature to test.
Returns:
  Returns an object which implements the specialized APIs of the specified feature and version, if any, or `null` if there is no object which implements interfaces associated with that feature. If the `DOMObject` returned by this method implements the `Node` interface, it must delegate to the primary core `Node` and not return results inconsistent with the primary core `Node` such as attributes, childNodes, etc.
Throws:
  `DOMException` - always.

### isSameNode

public boolean isSameNode(Node node) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `isSameNode` in interface `Node`
Parameters:
  `node` - The node to test against.
Returns:
  Returns `true` if the nodes are the same, `false` otherwise.
Throws:
  `DOMException` - always.

### isEqualNode

public boolean isEqualNode(Node node) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `isEqualNode` in interface `Node`
Parameters:
  `node` - The node to compare equality with.
Returns:
  Returns `true` if the nodes are equal, `false` otherwise.
Throws:
  `DOMException` - always.

### lookupNamespaceURI

public String lookupNamespaceURI(String prefix) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `lookupNamespaceURI` in interface `Node`
Parameters:
  `prefix` - The prefix to look for. If this parameter is `null`, the method will return the default namespace URI if any.
Returns:
  Returns the associated namespace URI or `null` if none is found.
Throws:
  `DOMException` - always.

### isDefaultNamespace

public boolean isDefaultNamespace(String namespaceURI) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `isDefaultNamespace` in interface `Node`
Parameters:
  `namespaceURI` - The namespace URI to look for.
Returns:
  Returns `true` if the specified `namespaceURI` is the default namespace, `false` otherwise.
Throws:
  `DOMException` - always.

### lookupPrefix

public String lookupPrefix(String namespaceURI) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `lookupPrefix` in interface `Node`
Parameters:
  `namespaceURI` - The namespace URI to look for.
Returns:
  Returns an associated namespace prefix if found or `null` if none is found. If more than one prefix are associated to the namespace prefix, the returned namespace prefix is implementation dependent.
Throws:
  `DOMException` - always.

### getTextContent

public String getTextContent() throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `getTextContent` in interface `Node`
Throws:
  `DOMException` - always.

### setTextContent

public void setTextContent(String textContent) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `setTextContent` in interface `Node`
Throws:
  `DOMException` - always.

### compareDocumentPosition

public short compareDocumentPosition(Node other) throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `compareDocumentPosition` in interface `Node`
Parameters:
  `other` - The node to compare against the reference node.
Returns:
  Returns how the node is positioned relatively to the reference node.
Throws:
  `DOMException` - always.

### getBaseURI

public String getBaseURI() throws DOMException
This DOM Level 3 method is not supported for `IIOMetadataNode` and will throw a `DOMException`.

Specified by:
  `getBaseURI` in interface `Node`
Throws:
  `DOMException` - always.