Package nu.xom

# Class ProcessingInstruction

java.lang.Object
nu.xom.Node
nu.xom.ProcessingInstruction

public class ProcessingInstruction extends Node

This class represents an XML processing instruction. Each processing instruction has two key properties:

- The target, a non-colonized name
- The data, a string which does not contain the two character sequence `?>`. The syntax of the data depends completely on the processing instruction. Other than forbidding `?>`, XML defines no rules for processing instruction data.

Version:
  1.3.0
Author:
  Elliotte Rusty Harold

## Constructor Summary

Constructors
Constructor
Description
`ProcessingInstruction(String target, String data)`
Create a processing instruction with a certain target and data.
`ProcessingInstruction(ProcessingInstruction instruction)`
Create a copy of a processing instruction.

## Method Summary

Modifier and Type
Method
Description
`ProcessingInstruction`
`copy()`
Returns a deep copy of this processing instruction with no parent, that can be added to this document or a different one.
`final Node`
`getChild(int position)`
Throws `IndexOutOfBoundsException` because processing instructions do not have children.
`final int`
`getChildCount()`
Returns 0 because processing instructions do not have children.
`final String`
`getTarget()`
Returns the processing instruction target.
`final String`
`getValue()`
Returns the processing instruction data.
`void`
`setTarget(String target)`
Sets the target.
`void`
`setValue(String data)`
Sets the data.
`final String`
`toString()`
Returns a `String` representation of this processing instruction suitable for debugging and diagnosis.
`final String`
`toXML()`
Returns the actual XML form of this processing instruction, such as might be copied and pasted from the original document.

### Methods inherited from class nu.xom.Node

`detach, equals, getBaseURI, getDocument, getParent, hashCode, query, query`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### ProcessingInstruction

public ProcessingInstruction(String target, String data)

Create a processing instruction with a certain target and data.

Parameters:
  `target` - the target of the processing instruction
  `data` - the processing instruction data
Throws:
  `IllegalTargetException` - if the target is not a non-colonized name or is the string "xml" in any case
  `IllegalDataException` - if data contains "?>" or any other illegal characters

### ProcessingInstruction

public ProcessingInstruction(ProcessingInstruction instruction)

Create a copy of a processing instruction.

Parameters:
  `instruction` - the processing instruction to copy

## Method Details

### getTarget

public final String getTarget()

Returns the processing instruction target.

Returns:
  the target

### setTarget

public void setTarget(String target)

Sets the target.

Parameters:
  `target` - the new target
Throws:
  `IllegalTargetException` - if the proposed target is not an XML 1.0 non-colonized name or is the string "xml" in any case

### setValue

public void setValue(String data)

Sets the data.

Parameters:
  `data` - the data to set
Throws:
  `IllegalDataException` - if `data` is null or otherwise not legal XML processing instruction data

### getValue

public final String getValue()

Returns the processing instruction data.

Specified by:
  `getValue` in class `Node`
Returns:
  the data of the processing instruction

### getChild

public final Node getChild(int position)

Throws `IndexOutOfBoundsException` because processing instructions do not have children.

Specified by:
  `getChild` in class `Node`
Parameters:
  `position` - the index of the child node to return
Returns:
  never returns because processing instructions do not have children; always throws an exception.
Throws:
  `IndexOutOfBoundsException` - because processing instructions do not have children

### getChildCount

public final int getChildCount()

Returns 0 because processing instructions do not have children.

Specified by:
  `getChildCount` in class `Node`
Returns:
  zero

### toXML

public final String toXML()

Returns the actual XML form of this processing instruction, such as might be copied and pasted from the original document.

Specified by:
  `toXML` in class `Node`
Returns:
  an XML representation of this processing instruction as a `String`

### copy

public ProcessingInstruction copy()

Returns a deep copy of this processing instruction with no parent, that can be added to this document or a different one.

Specified by:
  `copy` in class `Node`
Returns:
  a copy of this `ProcessingInstruction` with no parent

### toString

public final String toString()

Returns a `String` representation of this processing instruction suitable for debugging and diagnosis. This is not the XML representation of this processing instruction.

Overrides:
  `toString` in class `Object`
Returns:
  a non-XML string representation of this `ProcessingInstruction`