## org.apache.axis.message
Class MessageElement

    java.lang.Object
      org.apache.axis.message.NodeImpl
          org.apache.axis.message.MessageElement

All Implemented Interfaces:
  java.lang.Cloneable, org.w3c.dom.Element, Node, org.w3c.dom.Node, org.w3c.dom.NodeList, java.io.Serializable, SOAPElement

Direct Known Subclasses:
  DetailEntry, RPCParam, SOAPBody, SOAPBodyElement, SOAPEnvelope, SOAPFaultElement, SOAPHeader, SOAPHeaderElement

public class MessageElement
extends NodeImpl
implements SOAPElement, java.io.Serializable, org.w3c.dom.NodeList, java.lang.Cloneable

MessageElement is the base type of nodes of the SOAP message parse tree. Note: it was made Serializable to help users of Apache SOAP who had exploited the serializability of the DOM tree to migrate to Axis.

See Also:
  Serialized Form

Nested Class Summary
`protected static class` `MessageElement.QNameAttr` class that represents a qname in a the qNameAttrs vector.

Field Summary
`protected boolean` `_isRoot`
`protected DeserializationContext` `context`
`protected java.lang.String` `encodingStyle` Our encoding style, if any
`protected int` `endEventIndex`
`protected Deserializer` `fixupDeserializer` !!! TODO : Make sure this handles multiple targets
`protected java.lang.String` `href`
`protected java.lang.String` `id`
`protected static org.apache.commons.logging.Log` `log`
`protected SOAPEnvelope` `message`
`java.util.ArrayList` `namespaces`
`protected java.util.Vector` `qNameAttrs`
`protected SAX2EventRecorder` `recorder`
`protected int` `startContentsIndex`
`protected int` `startEventIndex`
`protected QName` `typeQName`

Fields inherited from class org.apache.axis.message.NodeImpl
`_isDirty, attributes, children, document, name, namespaceURI, parent, prefix, textRep`

Fields inherited from interface org.w3c.dom.Node
`ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

Constructor Summary
`MessageElement()` No-arg constructor for building messages?
`MessageElement(org.w3c.dom.CharacterData text)` construct a text element.
`MessageElement(org.w3c.dom.Element elem)` create a node through a deep copy of the passed in element.
`MessageElement(Name eltName)` construct using a `Name` implementation,
`MessageElement(QName name)` constructor declaring the qualified name of the node
`MessageElement(QName name, java.lang.Object value)` constructor declaring the qualified name of the node and its value
`MessageElement(java.lang.String namespace, java.lang.String localPart)` constructor
`MessageElement(java.lang.String namespace, java.lang.String localPart, java.lang.Object value)` constructor binding the internal object value field to the value parameter
`MessageElement(java.lang.String localPart, java.lang.String prefix, java.lang.String namespace)` constructor.
`MessageElement(java.lang.String namespace, java.lang.String localPart, java.lang.String prefix, org.xml.sax.Attributes attributes, DeserializationContext context)` Advanced constructor used for deserialization.

Method Summary
`SOAPElement` `addAttribute(Name attrName, java.lang.String value)` add a new attribute
`void` `addAttribute(java.lang.String namespace, java.lang.String localName, QName value)` add an attribute to the qname vector.
`void` `addAttribute(java.lang.String namespace, java.lang.String localName, java.lang.String value)` add a normal CDATA/text attribute.
`void` `addAttribute(java.lang.String attrPrefix, java.lang.String namespace, java.lang.String localName, java.lang.String value)` add an attribute.
`void` `addChild(MessageElement el)` Note that this method will log a error and no-op if there is a value (set using setObjectValue) in the MessageElement.
`SOAPElement` `addChildElement(Name childName)` add the child element
`SOAPElement` `addChildElement(SOAPElement element)` The added child must be an instance of MessageElement rather than an abitrary SOAPElement otherwise a (wrapped) ClassCastException will be thrown.
`SOAPElement` `addChildElement(java.lang.String localName)` add a child element in the message element's own namespace
`SOAPElement` `addChildElement(java.lang.String localName, java.lang.String prefixName)` add a child element
`SOAPElement` `addChildElement(java.lang.String localName, java.lang.String childPrefix, java.lang.String uri)` add a child element
`void` `addMapping(Mapping map)` add a new namespace/prefix mapping
`SOAPElement` `addNamespaceDeclaration(java.lang.String prefix, java.lang.String uri)` create a `Mapping` mapping and add to our namespace list.
`SOAPElement` `addTextNode(java.lang.String s)` add a text node to the document.
`protected void` `childDeepCloned(NodeImpl oldNode, NodeImpl newNode)`
`org.w3c.dom.Node` `cloneNode(boolean deep)` Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.

`protected java.lang.Object`

`cloning()`
protected clone method (not public) copied status ------------------- protected String name ; Y protected String prefix ; Y protected String namespaceURI ; Y protected transient Attributes attributes Y protected String id; Y? protected String href; Y? protected boolean _isRoot = true; Y? protected SOAPEnvelope message = null; N? protected transient DeserializationContext context; Y? protected transient QName typeQName = null; Y? protected Vector qNameAttrs = null; Y? protected transient SAX2EventRecorder recorder = null; N? protected int startEventIndex = 0; N? protected int startContentsIndex = 0; N? protected int endEventIndex = -1; N? protected CharacterData textRep = null; Y? protected MessageElement parent = null; N public ArrayList namespaces = null; Y protected String encodingStyle = null; N? private Object objectValue = null; N?

`void` `detachAllChildren()` remove all children.
`boolean` `equals(java.lang.Object obj)` equality test.
`protected MessageElement` `findElement(java.util.Vector vec, java.lang.String namespace, java.lang.String localPart)`
`java.util.Iterator` `getAllAttributes()` Get an interator to all the attributes of the node.
`org.w3c.dom.Document` `getAsDocument()` get the message element as a document.
`org.w3c.dom.Element` `getAsDOM()` create a DOM from the message element, by serializing and deserializing the element
`java.lang.String` `getAsString()` get the message element as a string.
`java.lang.String` `getAttribute(java.lang.String attrName)` get an attribute by name
`org.w3c.dom.Attr` `getAttributeNode(java.lang.String attrName)` Deprecated. this is not implemented
`org.w3c.dom.Attr` `getAttributeNodeNS(java.lang.String namespace, java.lang.String localName)` Deprecated. not implemented!
`java.lang.String` `getAttributeNS(java.lang.String namespaceURI, java.lang.String localName)` get the attribute with namespace/local name match.
`org.xml.sax.Attributes` `getAttributesEx()` get the attributes
`java.lang.String` `getAttributeValue(Name attrName)` Get the value of an attribute whose namespace and local name are described.
`java.lang.String` `getAttributeValue(java.lang.String localName)` get the value of an attribute
`MessageElement` `getChildElement(QName qname)` Convenience method to get the first matching child for a given QName.
`java.util.Iterator` `getChildElements()` get an iterator over the children This iterator may get confused if changes are made to the children while the iteration is in progress.
`java.util.Iterator` `getChildElements(Name childName)` get an iterator over child elements
`java.util.Iterator` `getChildElements(QName qname)` get an iterator over child elements
`java.util.List` `getChildren()` get a list of children
`org.xml.sax.Attributes` `getCompleteAttributes()` Obtain an Attributes collection consisting of all attributes for this MessageElement, including namespace declarations.
`DeserializationContext` `getDeserializationContext()` Retrieve the DeserializationContext associated with this MessageElement
`Name` `getElementName()` get the full name of the element
`org.w3c.dom.NodeList` `getElementsByTagName(java.lang.String tagName)`
`org.w3c.dom.NodeList` `getElementsByTagNameNS(java.lang.String namespace, java.lang.String localName)`
`protected org.w3c.dom.NodeList` `getElementsNS(org.w3c.dom.Element parentElement, java.lang.String namespace, java.lang.String localName)` helper method for recusively getting the element that has namespace URI and localname
`java.lang.String` `getEncodingStyle()` Get the encoding style.
`SOAPEnvelope` `getEnvelope()` get our current envelope
`Deserializer` `getFixupDeserializer()`
`java.lang.String` `getHref()` get a saved href
`java.lang.String` `getID()` get a saved ID
`int` `getLength()` The number of nodes in the list.
`java.lang.String` `getName()` get the local name of this element
`java.util.Iterator` `getNamespacePrefixes()` get an iterator of the prefixes.
`java.lang.String` `getNamespaceURI(java.lang.String searchPrefix)` map from a prefix to a namespace.
`java.lang.Object` `getObjectValue()` Returns value of the node as an object of registered type.
`java.lang.Object` `getObjectValue(java.lang.Class cls)` Returns value of the node as an object of registered type.
`org.w3c.dom.Document` `getOwnerDocument()` The `Document` object associated with this node.
`java.lang.String` `getPrefix(java.lang.String searchNamespaceURI)` get the prefix for a given namespace URI
`QName` `getQName()` get the fully qualified name of this element
`MessageElement` `getRealElement()` get the 'real' element -will follow hrefs.
`SAX2EventRecorder` `getRecorder()` get the event recorder
`java.lang.String` `getTagName()`
`QName` `getType()` get the element's type.
`java.lang.String` `getValue()` Get the value of the doc as a string.
`java.lang.Object` `getValueAsType(QName type)`
`java.lang.Object` `getValueAsType(QName type, java.lang.Class cls)` This is deserialization logic mixed in to our element class.
`protected java.lang.String` `getValueDOM()`
`java.util.Iterator` `getVisibleNamespacePrefixes()` get an iterator over visible prefixes.
`boolean` `hasAttribute(java.lang.String attrName)` test for an attribute existing
`boolean` `hasAttributeNS(java.lang.String namespace, java.lang.String localName)` Test for an attribute
`boolean` `isRoot()` get the is-root flag
`org.w3c.dom.Node` `item(int index)` get a child node
`void` `output(SerializationContext outputContext)` This is the public output() method, which will always simply use the recorded SAX stream for this element if it is available.
`protected void` `outputImpl(SerializationContext outputContext)` override point -output to a serialization context.
`void` `publishContents(org.xml.sax.ContentHandler handler)` replay the sax events to a SAX content handles
`void` `publishToHandler(org.xml.sax.ContentHandler handler)` replay the sax events to a handler
`boolean` `removeAttribute(Name attrName)` remove an element
`void` `removeAttribute(java.lang.String attrName)` remove a named attribute.
`org.w3c.dom.Attr` `removeAttributeNode(org.w3c.dom.Attr oldAttr)` remove a an attribue
`void` `removeAttributeNS(java.lang.String namespace, java.lang.String localName)` Remove an attribute.
`void` `removeContents()` remove all chidlren.
`boolean` `removeNamespaceDeclaration(java.lang.String namespacePrefix)` remove a namespace declaration.
`void` `setAllAttributes(org.xml.sax.Attributes attrs)` set all the attributes of this instance
`void` `setAttribute(java.lang.String name, java.lang.String value)` set or update an attribute.
`void` `setAttribute(java.lang.String namespace, java.lang.String localName, java.lang.String value)` Set an attribute, adding the attribute if it isn't already present in this element, and changing the value if it is.
`org.w3c.dom.Attr` `setAttributeNode(org.w3c.dom.Attr newAttr)` Deprecated. this is not implemented
`org.w3c.dom.Attr` `setAttributeNodeNS(org.w3c.dom.Attr newAttr)` set an attribute as a node
`void` `setAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName, java.lang.String value)` set an attribute or alter an existing one
`void` `setContentsIndex(int index)` set the index point of our content's starting in the event recording
`void` `setEncodingStyle(java.lang.String encodingStyle)` Sets the encoding style for this `SOAPElement` object to one specified.
`void` `setEndIndex(int endIndex)` record the end index of the SAX recording.
`void` `setEnvelope(SOAPEnvelope env)` bind a a new soap envelope.
`void` `setFixupDeserializer(Deserializer dser)`
`void` `setName(java.lang.String name)` set the local part of this element's name
`void` `setNamespaceURI(java.lang.String nsURI)` set the namespace URI of the element
`void` `setNSMappings(java.util.ArrayList namespaces)` set a new namespace mapping list
`void` `setObjectValue(java.lang.Object newValue)` Sets value of this node to an Object.
`void` `setQName(QName qName)` set the name and namespace of this element
`void` `setRecorder(SAX2EventRecorder rec)` set the event recorder
`void` `setType(QName qname)` set the element's type
`void` `setValue(java.lang.String value)` If this is a Text node then this method will set its value, otherwise it sets the value of the immediate (Text) child of this node.
`java.lang.String` `toString()` Generate a string representation by serializing our contents This is not a lightweight operation, and is repeated whenever you call this method.

Methods inherited from class org.apache.axis.message.NodeImpl

`appendChild, convertAttrSAXtoDOM, detachNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getParent, getParentElement, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, initializeChildren, insertBefore, isDirty, isSupported, makeAttributesEditable, normalize, recycleNode, removeChild, replaceChild, reset, setDirty, setDirty, setNodeValue, setOwnerDocument, setParent, setParentElement, setPrefix`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface javax.xml.soap.Node
`detachNode, getParentElement, recycleNode, setParentElement`

Methods inherited from interface org.w3c.dom.Node
`appendChild, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getParentNode, getPrefix, getPreviousSibling, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix`

Field Detail

### log

    protected static org.apache.commons.logging.Log log

### id

    protected java.lang.String id

### href

    protected java.lang.String href

### _isRoot

    protected boolean _isRoot

### message

    protected SOAPEnvelope message

### context

    protected transient DeserializationContext context

### typeQName

    protected transient QName typeQName

### qNameAttrs

    protected java.util.Vector qNameAttrs

### recorder

    protected transient SAX2EventRecorder recorder

### startEventIndex

    protected int startEventIndex

### startContentsIndex

    protected int startContentsIndex

### endEventIndex

    protected int endEventIndex

### namespaces

    public java.util.ArrayList namespaces

### encodingStyle

    protected java.lang.String encodingStyle

  Our encoding style, if any

### fixupDeserializer

    protected Deserializer fixupDeserializer

  !!! TODO : Make sure this handles multiple targets

Constructor Detail

### MessageElement

    public MessageElement()

  No-arg constructor for building messages?

### MessageElement

    public MessageElement(java.lang.String namespace,
                          java.lang.String localPart)

  constructor

Parameters:
  `namespace` - namespace of element
  `localPart` - local name

### MessageElement

    public MessageElement(java.lang.String localPart,
                          java.lang.String prefix,
                          java.lang.String namespace)

  constructor. Automatically adds a namespace-prefix mapping to the mapping table

Parameters:
  `localPart` - local name
  `prefix` - prefix
  `namespace` - namespace

### MessageElement

    public MessageElement(Name eltName)

  construct using a `Name` implementation,

Parameters:
  `eltName` -
See Also:
  `MessageElement(String, String, String)`

### MessageElement

    public MessageElement(java.lang.String namespace,
                          java.lang.String localPart,
                          java.lang.Object value)

  constructor binding the internal object value field to the value parameter

Parameters:
  `namespace` - namespace of the element
  `localPart` - local name
  `value` - value of the node

### MessageElement

    public MessageElement(QName name)

  constructor declaring the qualified name of the node

Parameters:
  `name` - naming information

### MessageElement

    public MessageElement(QName name,
                          java.lang.Object value)

  constructor declaring the qualified name of the node and its value

Parameters:
  `name` - naming information
  `value` - value of the node

### MessageElement

    public MessageElement(org.w3c.dom.Element elem)

  create a node through a deep copy of the passed in element.

Parameters:
  `elem` - name to copy from

### MessageElement

    public MessageElement(org.w3c.dom.CharacterData text)

  construct a text element.

Parameters:
  `text` - text data. This is not copied; it is referred to in the MessageElement.

### MessageElement

    public MessageElement(java.lang.String namespace,
                          java.lang.String localPart,
                          java.lang.String prefix,
                          org.xml.sax.Attributes attributes,
                          DeserializationContext context)
                   throws AxisFault

  Advanced constructor used for deserialization.
  1. The context provides the mappings and Sax event recorder
  2. The soap messaging style is determined from the current message context, defaulting to SOAP1.1 if there is no current context.
  3. if there is an id attribute (any namespace), then the ID is registered with `DeserializationContext.registerElementByID(String, MessageElement)` ;a new recorder is created if needed.
  4. If there is an attribute "root" in the default SOAP namespace, then it is examined to see if it marks the element as root (value=="1" or not)
  5. If there is an arrayType attribute then we assume we are an array and set our `typeQName` field appropriately.
  6. The `href` field is set if there is a relevant href value

Parameters:
  `namespace` - namespace namespace of element
  `localPart` - local name local name of element
  `prefix` - prefix prefix of element
  `attributes` - attributes to save as our attributes
  `context` - deserialization context for this message element
Throws:
  `AxisFault` - if the encoding style is not recognized/supported

Method Detail

### getDeserializationContext

    public DeserializationContext getDeserializationContext()

  Retrieve the DeserializationContext associated with this MessageElement

  Returns:
    The DeserializationContext associated with this MessageElement

### setFixupDeserializer

    public void setFixupDeserializer(Deserializer dser)

### getFixupDeserializer

    public Deserializer getFixupDeserializer()

### setEndIndex

    public void setEndIndex(int endIndex)

  record the end index of the SAX recording.

  Parameters:
    `endIndex` - end value

### isRoot

    public boolean isRoot()

  get the is-root flag

  Returns:
    true if the element is considered a document root.

### getID

    public java.lang.String getID()

  get a saved ID

  Returns:
    ID or null for no ID

### getHref

    public java.lang.String getHref()

  get a saved href

  Returns:
    href or null

### getAttributesEx

    public org.xml.sax.Attributes getAttributesEx()

  get the attributes

  Returns:
    attributes. If this equals `NullAttributes.singleton` it is null

### cloneNode

    public org.w3c.dom.Node cloneNode(boolean deep)

  Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent; ( `parentNode` is `null`.).
  Cloning an `Element` copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a child `Text` node. Cloning an `Attribute` directly, as opposed to be cloned as part of an `Element` cloning operation, returns a specified attribute ( `specified` is `true`). Cloning any other type of node simply returns a copy of this node.
  Note that cloning an immutable subtree results in a mutable copy, but the children of an `EntityReference` clone are readonly . In addition, clones of unspecified `Attr` nodes are specified. And, cloning `Document`, `DocumentType`, `Entity`, and `Notation` nodes is implementation dependent.

  Specified by:
    `cloneNode` in interface `org.w3c.dom.Node`
  Overrides:
    `cloneNode` in class `NodeImpl`
  Parameters:
    `deep` - If `true`, recursively clone the subtree under the specified node; if `false`, clone only the node itself (and its attributes, if it is an `Element`).
  Returns:
    The duplicate node.

### childDeepCloned

    protected void childDeepCloned(NodeImpl oldNode,
                                   NodeImpl newNode)

### cloning

    protected java.lang.Object cloning()
                                throws java.lang.CloneNotSupportedException

  protected clone method (not public) copied status ------------------- protected String name ; Y protected String prefix ; Y protected String namespaceURI ; Y protected transient Attributes attributes Y protected String id; Y? protected String href; Y? protected boolean _isRoot = true; Y? protected SOAPEnvelope message = null; N? protected transient DeserializationContext context; Y? protected transient QName typeQName = null; Y? protected Vector qNameAttrs = null; Y? protected transient SAX2EventRecorder recorder = null; N? protected int startEventIndex = 0; N? protected int startContentsIndex = 0; N? protected int endEventIndex = -1; N? protected CharacterData textRep = null; Y? protected MessageElement parent = null; N public ArrayList namespaces = null; Y protected String encodingStyle = null; N? private Object objectValue = null; N?

  Returns:
  Throws:
    `java.lang.CloneNotSupportedException`

### setAllAttributes

    public void setAllAttributes(org.xml.sax.Attributes attrs)

  set all the attributes of this instance

  Parameters:
    `attrs` - a new attributes list

### detachAllChildren

    public void detachAllChildren()

  remove all children.

### getCompleteAttributes

    public org.xml.sax.Attributes getCompleteAttributes()

  Obtain an Attributes collection consisting of all attributes for this MessageElement, including namespace declarations.

  Returns:
    Attributes collection

### getName

    public java.lang.String getName()

  get the local name of this element

  Returns:
    name

### setName

    public void setName(java.lang.String name)

  set the local part of this element's name

  Parameters:
    `name` -

### getQName

    public QName getQName()

  get the fully qualified name of this element

  Returns:
    a QName describing the name of thsi element

### setQName

    public void setQName(QName qName)

  set the name and namespace of this element

  Parameters:
    `qName` - qualified name

### setNamespaceURI

    public void setNamespaceURI(java.lang.String nsURI)

  set the namespace URI of the element

  Parameters:
    `nsURI` - new namespace URI

### getType

    public QName getType()

  get the element's type. If we are a reference, we look up our target in the context and return (and cache) its type.

  Returns:

### setType

    public void setType(QName qname)

  set the element's type

  Parameters:
    `qname` -

### getRecorder

    public SAX2EventRecorder getRecorder()

  get the event recorder

  Returns:
    recorder or null

### setRecorder

    public void setRecorder(SAX2EventRecorder rec)

  set the event recorder

  Parameters:
    `rec` -

### getEncodingStyle

    public java.lang.String getEncodingStyle()

  Get the encoding style. If ours is null, walk up the hierarchy and use our parent's. Default if we're the root is "".

  Specified by:
    `getEncodingStyle` in interface `SOAPElement`
  Returns:
    the currently in-scope encoding style
  See Also:
    `setEncodingStyle(java.lang.String)`

### removeContents

    public void removeContents()

  remove all chidlren. All SOAPExceptions which can get thrown in this process are ignored.

  Specified by:
    `removeContents` in interface `SOAPElement`

### getVisibleNamespacePrefixes

    public java.util.Iterator getVisibleNamespacePrefixes()

  get an iterator over visible prefixes. This includes all declared in parent elements

  Specified by:
    `getVisibleNamespacePrefixes` in interface `SOAPElement`
  Returns:
    an iterator.

### setEncodingStyle

    public void setEncodingStyle(java.lang.String encodingStyle)
                          throws SOAPException

  Sets the encoding style for this `SOAPElement` object to one specified. The semantics of a null value, as above in getEncodingStyle() are to just use the parent's value, but null here means set to "".

  Specified by:
    `setEncodingStyle` in interface `SOAPElement`
  Parameters:
    `encodingStyle` - a `String` giving the encoding style
  Throws:
    `java.lang.IllegalArgumentException` - if there was a problem in the encoding style being set.
    `SOAPException`
  See Also:
    `getEncodingStyle()`

### addChild

    public void addChild(MessageElement el)
                  throws SOAPException

  Note that this method will log a error and no-op if there is a value (set using setObjectValue) in the MessageElement.

  Throws:
    `SOAPException`

### getChildren

    public java.util.List getChildren()

  get a list of children

  Returns:
    a list, or null if there are no children

### setContentsIndex

    public void setContentsIndex(int index)

  set the index point of our content's starting in the event recording

  Parameters:
    `index` - index value of the first event of our recorder.

### setNSMappings

    public void setNSMappings(java.util.ArrayList namespaces)

  set a new namespace mapping list

  Parameters:
    `namespaces` -

### getPrefix

    public java.lang.String getPrefix(java.lang.String searchNamespaceURI)

  get the prefix for a given namespace URI

  Parameters:
    `searchNamespaceURI` - namespace
  Returns:
    null for null or emtpy uri, null for no match, and the prefix iff there is a match

### getNamespaceURI

    public java.lang.String getNamespaceURI(java.lang.String searchPrefix)

  map from a prefix to a namespace. Will recurse upward the element tree until we get a match

  Specified by:
    `getNamespaceURI` in interface `SOAPElement`
  Parameters:
    `searchPrefix` -
  Returns:
    the prefix, or null for no match

### getObjectValue

    public java.lang.Object getObjectValue()

  Returns value of the node as an object of registered type.

  Returns:
    Object of proper type, or null if no mapping could be found.

### getObjectValue

    public java.lang.Object getObjectValue(java.lang.Class cls)
                                    throws java.lang.Exception

  Returns value of the node as an object of registered type.

  Parameters:
    `cls` - Class that contains top level deserializer metadata
  Returns:
    Object of proper type, or null if no mapping could be found.
  Throws:
    `java.lang.Exception`

### setObjectValue

    public void setObjectValue(java.lang.Object newValue)
                        throws SOAPException

  Sets value of this node to an Object. A serializer needs to be registered for this object class for proper operation.

  Note that this method will log an error and no-op if there are any children in the MessageElement or if the MessageElement was constructed from XML.

  Parameters:
    `newValue` - node's value or null.
  Throws:
    `SOAPException`

### getValueAsType

    public java.lang.Object getValueAsType(QName type)
                                    throws java.lang.Exception

  Throws:
    `java.lang.Exception`

### getValueAsType

    public java.lang.Object getValueAsType(QName type,
                                           java.lang.Class cls)
                                    throws java.lang.Exception

  This is deserialization logic mixed in to our element class. It is only valid we have a deserializer, which means that we were created using `MessageElement(String, String, String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)`

  Parameters:
    `type` - type to look up a deserializer for.
    `cls` - class to use for looking up the deserializer. This takes precedence over the type field.
  Returns:
    the value of the deserializer
  Throws:
    `java.lang.Exception`

### addAttribute

    public void addAttribute(java.lang.String namespace,
                             java.lang.String localName,
                             QName value)

  add an attribute to the qname vector. This is a separate vector from the main attribute list.

  Parameters:
    `namespace` -
    `localName` -
    `value` -

### addAttribute

    public void addAttribute(java.lang.String namespace,
                             java.lang.String localName,
                             java.lang.String value)

  add a normal CDATA/text attribute. There is no check whether or not the attribute already exists.

  Parameters:
    `namespace` - namespace URI
    `localName` - local anme
    `value` - value

### addAttribute

    public void addAttribute(java.lang.String attrPrefix,
                             java.lang.String namespace,
                             java.lang.String localName,
                             java.lang.String value)

  add an attribute. Note that the prefix is not added to our mapping list. Also, there is no check whether or not the attribute already exists.

  Parameters:
    `attrPrefix` - prefix.
    `namespace` - namespace URI
    `localName` -
    `value` -

### setAttribute

    public void setAttribute(java.lang.String namespace,
                             java.lang.String localName,
                             java.lang.String value)

  Set an attribute, adding the attribute if it isn't already present in this element, and changing the value if it is. Passing null as the value will cause any pre-existing attribute by this name to go away.

### getAttributeValue

    public java.lang.String getAttributeValue(java.lang.String localName)

  get the value of an attribute

  Parameters:
    `localName` -
  Returns:
    the value or null

### setEnvelope

    public void setEnvelope(SOAPEnvelope env)

  bind a a new soap envelope. sets the dirty bit.

  Parameters:
    `env` -

### getEnvelope

    public SOAPEnvelope getEnvelope()

  get our current envelope

  Returns:
    envelope or null.

### getRealElement

    public MessageElement getRealElement()

  get the 'real' element -will follow hrefs.

  Returns:
    the message element or null if there is a href to something that is not a MessageElemeent.

### getAsDocument

    public org.w3c.dom.Document getAsDocument()
                                       throws java.lang.Exception

  get the message element as a document. This serializes the element to a string and then parses it.

  Returns:
  Throws:
    `java.lang.Exception`
  See Also:
    `getAsString()`

### getAsString

    public java.lang.String getAsString()
                                 throws java.lang.Exception

  get the message element as a string. This is not a cheap operation, as we have to serialise the entire message element to the current context, then convert it to a string. Nor is it cached; repeated calls repeat the operation.

  Returns:
    an XML fragment in a string.
  Throws:
    `java.lang.Exception` - if anything went wrong

### getAsDOM

    public org.w3c.dom.Element getAsDOM()
                                 throws java.lang.Exception

  create a DOM from the message element, by serializing and deserializing the element

  Returns:
    the root document element of the element
  Throws:
    `java.lang.Exception`
  See Also:
    `getAsString()`, `getAsDocument()`

### publishToHandler

    public void publishToHandler(org.xml.sax.ContentHandler handler)
                          throws org.xml.sax.SAXException

  replay the sax events to a handler

  Parameters:
    `handler` -
  Throws:
    `org.xml.sax.SAXException`

### publishContents

    public void publishContents(org.xml.sax.ContentHandler handler)
                         throws org.xml.sax.SAXException

  replay the sax events to a SAX content handles

  Parameters:
    `handler` -
  Throws:
    `org.xml.sax.SAXException`

### output

    public final void output(SerializationContext outputContext)
                      throws java.lang.Exception

  This is the public output() method, which will always simply use the recorded SAX stream for this element if it is available. If not, this method calls outputImpl() to allow subclasses and programmatically created messages to serialize themselves.

  Overrides:
    `output` in class `NodeImpl`
  Parameters:
    `outputContext` - the SerializationContext we will write to.
  Throws:
    `java.lang.Exception`

### outputImpl

    protected void outputImpl(SerializationContext outputContext)
                       throws java.lang.Exception

  override point -output to a serialization context.

  Parameters:
    `outputContext` - destination.
  Throws:
    `java.lang.Exception` - if something went wrong.

### toString

    public java.lang.String toString()

  Generate a string representation by serializing our contents This is not a lightweight operation, and is repeated whenever you call this method. If the serialization fails, an error is logged and the classic `Object.toString()` operation invoked instead.

  Returns:
    a string representing the class

### addMapping

    public void addMapping(Mapping map)

  add a new namespace/prefix mapping

  Parameters:
    `map` - new mapping to add

### addChildElement

    public SOAPElement addChildElement(Name childName)
                                throws SOAPException

  add the child element

  Specified by:
    `addChildElement` in interface `SOAPElement`
  Parameters:
    `childName` - uri, prefix and local name of the element to add
  Returns:
    the child element
  Throws:
    `SOAPException`
  See Also:
    `SOAPElement.addChildElement(javax.xml.soap.Name)`

### addChildElement

    public SOAPElement addChildElement(java.lang.String localName)
                                throws SOAPException

  add a child element in the message element's own namespace

  Specified by:
    `addChildElement` in interface `SOAPElement`
  Parameters:
    `localName` -
  Returns:
    the child element
  Throws:
    `SOAPException`
  See Also:
    `SOAPElement.addChildElement(String)`

### addChildElement

    public SOAPElement addChildElement(java.lang.String localName,
                                       java.lang.String prefixName)
                                throws SOAPException

  add a child element

  Specified by:
    `addChildElement` in interface `SOAPElement`
  Parameters:
    `localName` -
    `prefixName` -
  Returns:
    the child element
  Throws:
    `SOAPException`
  See Also:
    `SOAPElement.addChildElement(String, String)`

### addChildElement

    public SOAPElement addChildElement(java.lang.String localName,
                                       java.lang.String childPrefix,
                                       java.lang.String uri)
                                throws SOAPException

  add a child element

  Specified by:
    `addChildElement` in interface `SOAPElement`
  Parameters:
    `localName` -
    `childPrefix` -
    `uri` -
  Returns:
    the child element
  Throws:
    `SOAPException`
  See Also:
    `SOAPElement.addChildElement(String, String, String)`

### addChildElement

    public SOAPElement addChildElement(SOAPElement element)
                                throws SOAPException

  The added child must be an instance of MessageElement rather than an abitrary SOAPElement otherwise a (wrapped) ClassCastException will be thrown.

  Specified by:
    `addChildElement` in interface `SOAPElement`
  Parameters:
    `element` - the `SOAPElement` to be added as a new child
  Returns:
    an instance representing the new SOAP element that was actually added to the tree.
  Throws:
    `SOAPException` - if there was an error in adding this element as a child
  See Also:
    `SOAPElement.addChildElement(javax.xml.soap.SOAPElement)`

### addTextNode

    public SOAPElement addTextNode(java.lang.String s)
                            throws SOAPException

  add a text node to the document.

  Specified by:
    `addTextNode` in interface `SOAPElement`
  Parameters:
    `s` - a `String` object with the textual content to be added
  Returns:
    ourselves
  Throws:
    `SOAPException` - if there is an error in creating the new `Text` object
  See Also:
    `SOAPElement.addTextNode(String)`

### addAttribute

    public SOAPElement addAttribute(Name attrName,
                                    java.lang.String value)
                             throws SOAPException

  add a new attribute

  Specified by:
    `addAttribute` in interface `SOAPElement`
  Parameters:
    `attrName` - name of the attribute
    `value` - a string value
  Returns:
    ourselves
  Throws:
    `SOAPException`
  See Also:
    `SOAPElement.addAttribute(javax.xml.soap.Name, String)`

### addNamespaceDeclaration

    public SOAPElement addNamespaceDeclaration(java.lang.String prefix,
                                               java.lang.String uri)
                                        throws SOAPException

  create a `Mapping` mapping and add to our namespace list.

  Specified by:
    `addNamespaceDeclaration` in interface `SOAPElement`
  Parameters:
    `prefix` -
    `uri` -
  Returns:
  Throws:
    `SOAPException` - for any `RuntimeException` caught
  See Also:
    `SOAPElement.addNamespaceDeclaration(String, String)`

### getAttributeValue

    public java.lang.String getAttributeValue(Name attrName)

  Get the value of an attribute whose namespace and local name are described.

  Specified by:
    `getAttributeValue` in interface `SOAPElement`
  Parameters:
    `attrName` - qualified name of the attribute
  Returns:
    the attribute or null if there was no match
  See Also:
    `SOAPElement.getAttributeValue(javax.xml.soap.Name)`

### getAllAttributes

    public java.util.Iterator getAllAttributes()

  Get an interator to all the attributes of the node. The iterator is over a static snapshot of the node names; if attributes are added or deleted during the iteration, this iterator will be not be updated to follow the changes.

  Specified by:
    `getAllAttributes` in interface `SOAPElement`
  Returns:
    an iterator of the attributes.
  See Also:
    `SOAPElement.getAllAttributes()`

### getNamespacePrefixes

    public java.util.Iterator getNamespacePrefixes()

  get an iterator of the prefixes. The iterator does not get updated in response to changes in the namespace list.

  Specified by:
    `getNamespacePrefixes` in interface `SOAPElement`
  Returns:
    an iterator over a vector of prefixes
  See Also:
    `SOAPElement.getNamespacePrefixes()`

### getElementName

    public Name getElementName()

  get the full name of the element

  Specified by:
    `getElementName` in interface `SOAPElement`
  Returns:
  See Also:
    `SOAPElement.getElementName()`

### removeAttribute

    public boolean removeAttribute(Name attrName)

  remove an element

  Specified by:
    `removeAttribute` in interface `SOAPElement`
  Parameters:
    `attrName` - name of the element
  Returns:
    true if the attribute was found and removed.
  See Also:
    `SOAPElement.removeAttribute(javax.xml.soap.Name)`

### removeNamespaceDeclaration

    public boolean removeNamespaceDeclaration(java.lang.String namespacePrefix)

  remove a namespace declaration.

  Specified by:
    `removeNamespaceDeclaration` in interface `SOAPElement`
  Parameters:
    `namespacePrefix` -
  Returns:
    true if the prefix was found and removed.
  See Also:
    `SOAPElement.removeNamespaceDeclaration(String)`

### getChildElements

    public java.util.Iterator getChildElements()

  get an iterator over the children This iterator may get confused if changes are made to the children while the iteration is in progress.

  Specified by:
    `getChildElements` in interface `SOAPElement`
  Returns:
    an iterator over child elements.
  See Also:
    `SOAPElement.getChildElements()`

### getChildElement

    public MessageElement getChildElement(QName qname)

  Convenience method to get the first matching child for a given QName.

  Parameters:
    `qname` -
  Returns:
    child element or null
  See Also:
    `SOAPElement.getChildElements()`

### getChildElements

    public java.util.Iterator getChildElements(QName qname)

  get an iterator over child elements

  Parameters:
    `qname` - namespace/element name of parts to find. This iterator is not (currently) susceptible to change in the element list during its lifetime, though changes in the contents of the elements are picked up.
  Returns:
    an iterator.

### getChildElements

    public java.util.Iterator getChildElements(Name childName)

  get an iterator over child elements

  Specified by:
    `getChildElements` in interface `SOAPElement`
  Parameters:
    `childName` - namespace/element name of parts to find. This iterator is not (currently) susceptible to change in the element list during its lifetime, though changes in the contents of the elements are picked up.
  Returns:
    an iterator.
  See Also:
    `SOAPElement.getChildElements(javax.xml.soap.Name)`

### getTagName

    public java.lang.String getTagName()

  Specified by:
    `getTagName` in interface `org.w3c.dom.Element`
  Returns:
    the name of the element
  See Also:
    `Element.getTagName()`

### removeAttribute

    public void removeAttribute(java.lang.String attrName)
                         throws org.w3c.dom.DOMException

  remove a named attribute.

  Specified by:
    `removeAttribute` in interface `org.w3c.dom.Element`
  Parameters:
    `attrName` - name of the attributes
  Throws:
    `org.w3c.dom.DOMException`
  See Also:
    `Element.removeAttribute(String)`

### hasAttribute

    public boolean hasAttribute(java.lang.String attrName)

  test for an attribute existing

  Specified by:
    `hasAttribute` in interface `org.w3c.dom.Element`
  Parameters:
    `attrName` - name of attribute (or null)
  Returns:
    true if it exists Note that the behaviour for a null parameter (returns false) is not guaranteed in future
  See Also:
    `Element.hasAttribute(String)`

### getAttribute

    public java.lang.String getAttribute(java.lang.String attrName)

  get an attribute by name

  Specified by:
    `getAttribute` in interface `org.w3c.dom.Element`
  Parameters:
    `attrName` - of attribute
  Returns:
    the attribute value or null
  See Also:
    `Element.getAttribute(String)`

### removeAttributeNS

    public void removeAttributeNS(java.lang.String namespace,
                                  java.lang.String localName)
                           throws org.w3c.dom.DOMException

  Remove an attribute. If the removed attribute has a default value it is immediately replaced. The replacing attribute has the same namespace URI and local name, as well as the original prefix. If there is no matching attribute, the operation is a no-op.

  Specified by:
    `removeAttributeNS` in interface `org.w3c.dom.Element`
  Parameters:
    `namespace` - namespace of attr
    `localName` - local name
  Throws:
    `org.w3c.dom.DOMException`
  See Also:
    `Element.removeAttributeNS(String, String)`

### setAttribute

    public void setAttribute(java.lang.String name,
                             java.lang.String value)
                      throws org.w3c.dom.DOMException

  set or update an attribute.

  Specified by:
    `setAttribute` in interface `org.w3c.dom.Element`
  Parameters:
    `name` - attribute name
    `value` - attribute value
  Throws:
    `org.w3c.dom.DOMException`
  See Also:
    `Element.setAttribute(String, String)`

### hasAttributeNS

    public boolean hasAttributeNS(java.lang.String namespace,
                                  java.lang.String localName)

  Test for an attribute

  Specified by:
    `hasAttributeNS` in interface `org.w3c.dom.Element`
  Parameters:
    `namespace` -
    `localName` -
  Returns:
  See Also:
    `Element.hasAttributeNS(String, String)`

### getAttributeNode

    public org.w3c.dom.Attr getAttributeNode(java.lang.String attrName)

  Deprecated. this is not implemented

  This unimplemented operation is meand to return an attribute as a node

  Specified by:
    `getAttributeNode` in interface `org.w3c.dom.Element`
  Parameters:
    `attrName` -
  Returns:
    null, always.
  See Also:
    `Element.getAttributeNode(String)`

### removeAttributeNode

    public org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr oldAttr)
                                         throws org.w3c.dom.DOMException

  remove a an attribue

  Specified by:
    `removeAttributeNode` in interface `org.w3c.dom.Element`
  Parameters:
    `oldAttr` -
  Returns:
    oldAttr
  Throws:
    `org.w3c.dom.DOMException`

### setAttributeNode

    public org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr newAttr)
                                      throws org.w3c.dom.DOMException

  Deprecated. this is not implemented

  set the attribute node.

  Specified by:
    `setAttributeNode` in interface `org.w3c.dom.Element`
  Parameters:
    `newAttr` -
  Returns:
    newAttr
  Throws:
    `org.w3c.dom.DOMException`
  See Also:
    `Element.setAttributeNode(org.w3c.dom.Attr)`

### setAttributeNodeNS

    public org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr newAttr)
                                        throws org.w3c.dom.DOMException

  set an attribute as a node

  Specified by:
    `setAttributeNodeNS` in interface `org.w3c.dom.Element`
  Parameters:
    `newAttr` -
  Returns:
    null
  Throws:
    `org.w3c.dom.DOMException`
  See Also:
    `Element.setAttributeNodeNS(org.w3c.dom.Attr)`

### getElementsByTagName

    public org.w3c.dom.NodeList getElementsByTagName(java.lang.String tagName)

  Specified by:
    `getElementsByTagName` in interface `org.w3c.dom.Element`
  Parameters:
    `tagName` - tag to look for.
  Returns:
    a list of elements
  See Also:
    `Element.getElementsByTagName(String)`

### getAttributeNS

    public java.lang.String getAttributeNS(java.lang.String namespaceURI,
                                           java.lang.String localName)

  get the attribute with namespace/local name match.

  Specified by:
    `getAttributeNS` in interface `org.w3c.dom.Element`
  Parameters:
    `namespaceURI` - namespace
    `localName` - name
  Returns:
    string value or null if not found
  See Also:
    `Element.getAttributeNS(String, String)`

### setAttributeNS

    public void setAttributeNS(java.lang.String namespaceURI,
                               java.lang.String qualifiedName,
                               java.lang.String value)
                        throws org.w3c.dom.DOMException

  set an attribute or alter an existing one

  Specified by:
    `setAttributeNS` in interface `org.w3c.dom.Element`
  Parameters:
    `namespaceURI` - namepsace
    `qualifiedName` - qualified name of the attribue
    `value` - value
  Throws:
    `org.w3c.dom.DOMException`
  See Also:
    `Element.setAttributeNS(String, String, String)`

### getAttributeNodeNS

    public org.w3c.dom.Attr getAttributeNodeNS(java.lang.String namespace,
                                               java.lang.String localName)

  Deprecated. not implemented!

  Specified by:
    `getAttributeNodeNS` in interface `org.w3c.dom.Element`
  Parameters:
    `namespace` - namespace
    `localName` - local name
  Returns:
    null
  See Also:
    `Element.getAttributeNS(String, String)`

### getElementsByTagNameNS

    public org.w3c.dom.NodeList getElementsByTagNameNS(java.lang.String namespace,
                                                       java.lang.String localName)

  Specified by:
    `getElementsByTagNameNS` in interface `org.w3c.dom.Element`
  Parameters:
    `namespace` - namespace
    `localName` - local name of element
  Returns:
    (potentially empty) list of elements that match the (namespace,localname) tuple
  See Also:
    `Element.getElementsByTagNameNS(String, String)`

### getElementsNS

    protected org.w3c.dom.NodeList getElementsNS(org.w3c.dom.Element parentElement,
                                                 java.lang.String namespace,
                                                 java.lang.String localName)

  helper method for recusively getting the element that has namespace URI and localname

  Parameters:
    `parentElement` - parent element
    `namespace` - namespace
    `localName` - local name of element
  Returns:
    (potentially empty) list of elements that match the (namespace,localname) tuple

### item

    public org.w3c.dom.Node item(int index)

  get a child node

  Specified by:
    `item` in interface `org.w3c.dom.NodeList`
  Parameters:
    `index` - index value
  Returns:
    child or null for out of range value
  See Also:
    `NodeList.item(int)`

### getLength

    public int getLength()

  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 `org.w3c.dom.NodeList`
  Returns:
    number of children
  Since:
    SAAJ 1.2 : Nodelist Interface
  See Also:
    `NodeList.getLength()`

### findElement

    protected MessageElement findElement(java.util.Vector vec,
                                         java.lang.String namespace,
                                         java.lang.String localPart)

### equals

    public boolean equals(java.lang.Object obj)

  equality test. Does a string match of the two message elements, so is fairly brute force.

  Parameters:
    `obj` -
  Returns:
  See Also:
    `toString()`

### getValue

    public java.lang.String getValue()

  Get the value of the doc as a string. This uses `getAsDOM()` so is a heavyweight operation.

  Specified by:
    `getValue` in interface `Node`
  Overrides:
    `getValue` in class `NodeImpl`
  Returns:
    the value of any child node, or null if there is no node/something went wrong during serialization. If the first child is text, the return value is the text itself.
  See Also:
    `;`

### getValueDOM

    protected java.lang.String getValueDOM()

### setValue

    public void setValue(java.lang.String value)

  Description copied from interface: `Node`
  If this is a Text node then this method will set its value, otherwise it sets the value of the immediate (Text) child of this node. The value of the immediate child of this node can be set only if, there is one child node and that node is a Text node, or if there are no children in which case a child Text node will be created.

  Specified by:
    `setValue` in interface `Node`
  Overrides:
    `setValue` in class `NodeImpl`
  Parameters:
    `value` - the text to set

### getOwnerDocument

    public org.w3c.dom.Document getOwnerDocument()

  Description copied from class: `NodeImpl`
  The `Document` object associated with this node. This is also the `Document` object used to create new nodes. When this node is a `Document` or a `DocumentType` which is not used with any `Document` yet, this is `null`.

  Specified by:
    `getOwnerDocument` in interface `org.w3c.dom.Node`
  Overrides:
    `getOwnerDocument` in class `NodeImpl`

Copyright © 2005 Apache Web Services Project. All Rights Reserved.