<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.4.2_08) on Sat Apr 22 18:56:47 PDT 2006 -->
<TITLE>
NodeImpl (Axis API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.axis.message.NodeImpl class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="NodeImpl (Axis API)";
}
</SCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/NodeImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/message/NamedNodeMapImpl.html" title="class in org.apache.axis.message"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/axis/message/NullAttributes.html" title="class in org.apache.axis.message"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="NodeImpl.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.axis.message</FONT>
<BR>
Class NodeImpl</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by"><B>org.apache.axis.message.NodeImpl</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>java.lang.Cloneable, <A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A>, org.w3c.dom.Node, java.io.Serializable</DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../org/apache/axis/message/MessageElement.html" title="class in org.apache.axis.message">MessageElement</A>, <A HREF="../../../../org/apache/axis/message/Text.html" title="class in org.apache.axis.message">Text</A></DD>
</DL>
<HR>
<DL>
<DT>public class <B>NodeImpl</B><DT>extends java.lang.Object<DT>implements org.w3c.dom.Node, <A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A>, java.io.Serializable, java.lang.Cloneable</DL>

<P>
This is our implementation of the DOM node
<P>

<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#org.apache.axis.message.NodeImpl">Serialized Form</A></DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Field Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#_isDirty">_isDirty</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;org.xml.sax.Attributes</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#attributes">attributes</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.util.ArrayList</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#children">children</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;org.w3c.dom.Document</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#document">document</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected static&nbsp;org.apache.commons.logging.Log</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#log">log</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#name">name</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#namespaceURI">namespaceURI</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/axis/message/NodeImpl.html" title="class in org.apache.axis.message">NodeImpl</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#parent">parent</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#prefix">prefix</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;org.w3c.dom.CharacterData</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#textRep">textRep</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.w3c.dom.Node"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Fields inherited from interface org.w3c.dom.Node</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>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</CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#NodeImpl()">NodeImpl</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty constructor</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#NodeImpl(org.w3c.dom.CharacterData)">NodeImpl</A></B>(org.w3c.dom.CharacterData&nbsp;text)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructor which adopts the name and NS of the char data, and its text</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#appendChild(org.w3c.dom.Node)">appendChild</A></B>(org.w3c.dom.Node&nbsp;newChild)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the node <code>newChild</code> to the end of the list of children
 of this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#cloneNode(boolean)">cloneNode</A></B>(boolean&nbsp;deep)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns a duplicate of this node, i.e., serves as a generic copy
 constructor for nodes.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;org.w3c.dom.NamedNodeMap</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#convertAttrSAXtoDOM(org.xml.sax.Attributes)">convertAttrSAXtoDOM</A></B>(org.xml.sax.Attributes&nbsp;saxAttr)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The internal representation of Attributes cannot help being changed
 It is because Attribute is not immutible Type, so if we keep out value and
 just return it in another form, the application may chnae it, which we cannot
 detect without some kind back track method (call back notifying the chnage.)
 I am not sure which approach is better.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#detachNode()">detachNode</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes this <code>Node</code> object from the tree.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.NamedNodeMap</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getAttributes()">getAttributes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <code>NamedNodeMap</code> containing the attributes of this node (if
 it is an <code>Element</code>) or <code>null</code> otherwise.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.NodeList</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getChildNodes()">getChildNodes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A <code>NodeList</code> that contains all children of this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getFirstChild()">getFirstChild</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The first child of this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getLastChild()">getLastChild</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The last child of this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getLocalName()">getLocalName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the local part of the qualified name of this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getNamespaceURI()">getNamespaceURI</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The namespace URI of this node, or <code>null</code> if it is
 unspecified.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getNextSibling()">getNextSibling</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The node immediately following this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getNodeName()">getNodeName</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The name of this node, depending on its type; see the table above.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;short</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getNodeType()">getNodeType</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A code representing the type of the underlying object, as defined above.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getNodeValue()">getNodeValue</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The value of this node, depending on its type; see the table above.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Document</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getOwnerDocument()">getOwnerDocument</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The <code>Document</code> object associated with this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/axis/message/NodeImpl.html" title="class in org.apache.axis.message">NodeImpl</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getParent()">getParent</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the parent node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../javax/xml/soap/SOAPElement.html" title="interface in javax.xml.soap">SOAPElement</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getParentElement()">getParentElement</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the parent element of this <code>Node</code> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getParentNode()">getParentNode</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The parent of this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getPrefix()">getPrefix</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The namespace prefix of this node, or <code>null</code> if it is
 unspecified.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getPreviousSibling()">getPreviousSibling</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The node immediately preceding this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.lang.String</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getValue()">getValue</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the the value of the immediate child of this <code>Node</code>
 object if a child exists and its value is text.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#hasAttributes()">hasAttributes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this node (if it is an element) has any attributes.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#hasChildNodes()">hasChildNodes</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether this node has any children.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#initializeChildren()">initializeChildren</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize the children array</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)">insertBefore</A></B>(org.w3c.dom.Node&nbsp;newChild,
             org.w3c.dom.Node&nbsp;refChild)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inserts the node <code>newChild</code> before the existing child node
 <code>refChild</code>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#isDirty()">isDirty</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get the dirty bit</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#isSupported(java.lang.String, java.lang.String)">isSupported</A></B>(java.lang.String&nbsp;feature,
            java.lang.String&nbsp;version)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tests whether the DOM implementation implements a specific feature and
 that feature is supported by this node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;org.xml.sax.helpers.AttributesImpl</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#makeAttributesEditable()">makeAttributesEditable</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make the attributes editable</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#normalize()">normalize</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Puts all <code>Text</code> nodes in the full depth of the sub-tree
 underneath this <code>Node</code>, including attribute nodes, into a
 "normal" form where only structure (e.g., elements, comments,
 processing instructions, CDATA sections, and entity references)
 separates <code>Text</code> nodes, i.e., there are neither adjacent
 <code>Text</code> nodes nor empty <code>Text</code> nodes.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#output(org.apache.axis.encoding.SerializationContext)">output</A></B>(<A HREF="../../../../org/apache/axis/encoding/SerializationContext.html" title="class in org.apache.axis.encoding">SerializationContext</A>&nbsp;context)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print the contents of this node</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#recycleNode()">recycleNode</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Notifies the implementation that this <code>Node</code>
 object is no longer being used by the application and that the
 implementation is free to reuse this object for nodes that may
 be created later.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#removeChild(org.w3c.dom.Node)">removeChild</A></B>(org.w3c.dom.Node&nbsp;oldChild)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the child node indicated by <code>oldChild</code> from the list
 of children, and returns it.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;org.w3c.dom.Node</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)">replaceChild</A></B>(org.w3c.dom.Node&nbsp;newChild,
             org.w3c.dom.Node&nbsp;oldChild)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replaces the child node <code>oldChild</code> with <code>newChild</code>
 in the list of children, and returns the <code>oldChild</code> node.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#reset()">reset</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setDirty()">setDirty</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setDirty(boolean)">setDirty</A></B>(boolean&nbsp;dirty)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set the dirty bit.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setNodeValue(java.lang.String)">setNodeValue</A></B>(java.lang.String&nbsp;nodeValue)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The value of this node, depending on its type; see the table above.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setOwnerDocument(org.w3c.dom.Document)">setOwnerDocument</A></B>(org.w3c.dom.Document&nbsp;doc)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the owner document</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setParent(org.apache.axis.message.NodeImpl)">setParent</A></B>(<A HREF="../../../../org/apache/axis/message/NodeImpl.html" title="class in org.apache.axis.message">NodeImpl</A>&nbsp;parent)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the parent node and invoke appendChild(this) to 
 add this node to the parent's list of children.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setParentElement(javax.xml.soap.SOAPElement)">setParentElement</A></B>(<A HREF="../../../../javax/xml/soap/SOAPElement.html" title="interface in javax.xml.soap">SOAPElement</A>&nbsp;parent)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the parent of this <code>Node</code> object to the given
 <code>SOAPElement</code> object.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setPrefix(java.lang.String)">setPrefix</A></B>(java.lang.String&nbsp;prefix)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The namespace prefix of this node, or <code>null</code> if it is
 unspecified.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setValue(java.lang.String)">setValue</A></B>(java.lang.String&nbsp;value)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class java.lang.Object</B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ FIELD DETAIL =========== -->

<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Field Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="log"><!-- --></A><H3>
log</H3>
<PRE>
protected static org.apache.commons.logging.Log <B>log</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="name"><!-- --></A><H3>
name</H3>
<PRE>
protected java.lang.String <B>name</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="prefix"><!-- --></A><H3>
prefix</H3>
<PRE>
protected java.lang.String <B>prefix</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="namespaceURI"><!-- --></A><H3>
namespaceURI</H3>
<PRE>
protected java.lang.String <B>namespaceURI</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="attributes"><!-- --></A><H3>
attributes</H3>
<PRE>
protected transient org.xml.sax.Attributes <B>attributes</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="document"><!-- --></A><H3>
document</H3>
<PRE>
protected org.w3c.dom.Document <B>document</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="parent"><!-- --></A><H3>
parent</H3>
<PRE>
protected <A HREF="../../../../org/apache/axis/message/NodeImpl.html" title="class in org.apache.axis.message">NodeImpl</A> <B>parent</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="children"><!-- --></A><H3>
children</H3>
<PRE>
protected java.util.ArrayList <B>children</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="textRep"><!-- --></A><H3>
textRep</H3>
<PRE>
protected org.w3c.dom.CharacterData <B>textRep</B></PRE>
<DL>
<DL>
</DL>
</DL>
<HR>

<A NAME="_isDirty"><!-- --></A><H3>
_isDirty</H3>
<PRE>
protected boolean <B>_isDirty</B></PRE>
<DL>
<DL>
</DL>
</DL>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="NodeImpl()"><!-- --></A><H3>
NodeImpl</H3>
<PRE>
public <B>NodeImpl</B>()</PRE>
<DL>
<DD>empty constructor
<P>
</DL>
<HR>

<A NAME="NodeImpl(org.w3c.dom.CharacterData)"><!-- --></A><H3>
NodeImpl</H3>
<PRE>
public <B>NodeImpl</B>(org.w3c.dom.CharacterData&nbsp;text)</PRE>
<DL>
<DD>constructor which adopts the name and NS of the char data, and its text
<P>
<DT><B>Parameters:</B><DD><CODE>text</CODE> - </DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=1><FONT SIZE="+2">
<B>Method Detail</B></FONT></TD>
</TR>
</TABLE>

<A NAME="getNodeType()"><!-- --></A><H3>
getNodeType</H3>
<PRE>
public short <B>getNodeType</B>()</PRE>
<DL>
<DD>A code representing the type of the underlying object, as defined above.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getNodeType</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="normalize()"><!-- --></A><H3>
normalize</H3>
<PRE>
public void <B>normalize</B>()</PRE>
<DL>
<DD>Puts all <code>Text</code> nodes in the full depth of the sub-tree
 underneath this <code>Node</code>, including attribute nodes, into a
 "normal" form where only structure (e.g., elements, comments,
 processing instructions, CDATA sections, and entity references)
 separates <code>Text</code> nodes, i.e., there are neither adjacent
 <code>Text</code> nodes nor empty <code>Text</code> nodes. This can
 be used to ensure that the DOM view of a document is the same as if
 it were saved and re-loaded, and is useful when operations (such as
 XPointer  lookups) that depend on a particular document tree
 structure are to be used.In cases where the document contains
 <code>CDATASections</code>, the normalize operation alone may not be
 sufficient, since XPointers do not differentiate between
 <code>Text</code> nodes and <code>CDATASection</code> nodes.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>normalize</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="hasAttributes()"><!-- --></A><H3>
hasAttributes</H3>
<PRE>
public boolean <B>hasAttributes</B>()</PRE>
<DL>
<DD>Returns whether this node (if it is an element) has any attributes.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>hasAttributes</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><code>true</code> if this node has any attributes,
         <code>false</code> otherwise.<DT><B>Since:</B></DT>
  <DD>DOM Level 2</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="hasChildNodes()"><!-- --></A><H3>
hasChildNodes</H3>
<PRE>
public boolean <B>hasChildNodes</B>()</PRE>
<DL>
<DD>Returns whether this node has any children.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>hasChildNodes</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD><code>true</code> if this node has any children,
         <code>false</code> otherwise.</DL>
</DD>
</DL>
<HR>

<A NAME="getLocalName()"><!-- --></A><H3>
getLocalName</H3>
<PRE>
public java.lang.String <B>getLocalName</B>()</PRE>
<DL>
<DD>Returns the local part of the qualified name of this node.
 <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
 <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
 method, such as <code>createElement</code> from the
 <code>Document</code> interface, this is always <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getLocalName</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Since:</B></DT>
  <DD>DOM Level 2</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getNamespaceURI()"><!-- --></A><H3>
getNamespaceURI</H3>
<PRE>
public java.lang.String <B>getNamespaceURI</B>()</PRE>
<DL>
<DD>The namespace URI of this node, or <code>null</code> if it is
 unspecified.
 <br>This is not a computed value that is the result of a namespace
 lookup based on an examination of the namespace declarations in
 scope. It is merely the namespace URI given at creation time.
 <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
 <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
 method, such as <code>createElement</code> from the
 <code>Document</code> interface, this is always <code>null</code>.Per
 the Namespaces in XML Specification  an attribute does not inherit
 its namespace from the element it is attached to. If an attribute is
 not explicitly given a namespace, it simply has no namespace.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getNamespaceURI</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Since:</B></DT>
  <DD>DOM Level 2</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="getNodeName()"><!-- --></A><H3>
getNodeName</H3>
<PRE>
public java.lang.String <B>getNodeName</B>()</PRE>
<DL>
<DD>The name of this node, depending on its type; see the table above.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getNodeName</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getNodeValue()"><!-- --></A><H3>
getNodeValue</H3>
<PRE>
public java.lang.String <B>getNodeValue</B>()
                              throws org.w3c.dom.DOMException</PRE>
<DL>
<DD>The value of this node, depending on its type; see the table above.
 When it is defined to be <code>null</code>, setting it has no effect.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getNodeValue</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
<DD><CODE>org.w3c.dom.DOMException</CODE> - DOMSTRING_SIZE_ERR: Raised when it would return more characters than
                                  fit in a <code>DOMString</code> variable on the implementation
                                  platform.</DL>
</DD>
</DL>
<HR>

<A NAME="getPrefix()"><!-- --></A><H3>
getPrefix</H3>
<PRE>
public java.lang.String <B>getPrefix</B>()</PRE>
<DL>
<DD>The namespace prefix of this node, or <code>null</code> if it is
 unspecified.
 <br>Note that setting this attribute, when permitted, changes the
 <code>nodeName</code> attribute, which holds the qualified name, as
 well as the <code>tagName</code> and <code>name</code> attributes of
 the <code>Element</code> and <code>Attr</code> interfaces, when
 applicable.
 <br>Note also that changing the prefix of an attribute that is known to
 have a default value, does not make a new attribute with the default
 value and the original prefix appear, since the
 <code>namespaceURI</code> and <code>localName</code> do not change.
 <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
 <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
 method, such as <code>createElement</code> from the
 <code>Document</code> interface, this is always <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getPrefix</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - INVALID_CHARACTER_ERR: Raised if the specified prefix contains an
                                  illegal character, per the XML 1.0 specification .
                                  <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
                                  <br>NAMESPACE_ERR: Raised if the specified <code>prefix</code> is
                                  malformed per the Namespaces in XML specification, if the
                                  <code>namespaceURI</code> of this node is <code>null</code>, if the
                                  specified prefix is "xml" and the <code>namespaceURI</code> of this
                                  node is different from "http://www.w3.org/XML/1998/namespace", if
                                  this node is an attribute and the specified prefix is "xmlns" and
                                  the <code>namespaceURI</code> of this node is different from "
                                  http://www.w3.org/2000/xmlns/", or if this node is an attribute and
                                  the <code>qualifiedName</code> of this node is "xmlns" .<DT><B>Since:</B></DT>
  <DD>DOM Level 2</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="setNodeValue(java.lang.String)"><!-- --></A><H3>
setNodeValue</H3>
<PRE>
public void <B>setNodeValue</B>(java.lang.String&nbsp;nodeValue)
                  throws org.w3c.dom.DOMException</PRE>
<DL>
<DD>The value of this node, depending on its type; see the table above.
 When it is defined to be <code>null</code>, setting it has no effect.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>setNodeValue</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
<DD><CODE>org.w3c.dom.DOMException</CODE> - DOMSTRING_SIZE_ERR: Raised when it would return more characters than
                                  fit in a <code>DOMString</code> variable on the implementation
                                  platform.</DL>
</DD>
</DL>
<HR>

<A NAME="setPrefix(java.lang.String)"><!-- --></A><H3>
setPrefix</H3>
<PRE>
public void <B>setPrefix</B>(java.lang.String&nbsp;prefix)</PRE>
<DL>
<DD>The namespace prefix of this node, or <code>null</code> if it is
 unspecified.
 <br>Note that setting this attribute, when permitted, changes the
 <code>nodeName</code> attribute, which holds the qualified name, as
 well as the <code>tagName</code> and <code>name</code> attributes of
 the <code>Element</code> and <code>Attr</code> interfaces, when
 applicable.
 <br>Note also that changing the prefix of an attribute that is known to
 have a default value, does not make a new attribute with the default
 value and the original prefix appear, since the
 <code>namespaceURI</code> and <code>localName</code> do not change.
 <br>For nodes of any type other than <code>ELEMENT_NODE</code> and
 <code>ATTRIBUTE_NODE</code> and nodes created with a DOM Level 1
 method, such as <code>createElement</code> from the
 <code>Document</code> interface, this is always <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>setPrefix</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>

<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - INVALID_CHARACTER_ERR: Raised if the specified prefix contains an
                                  illegal character, per the XML 1.0 specification .
                                  <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
                                  <br>NAMESPACE_ERR: Raised if the specified <code>prefix</code> is
                                  malformed per the Namespaces in XML specification, if the
                                  <code>namespaceURI</code> of this node is <code>null</code>, if the
                                  specified prefix is "xml" and the <code>namespaceURI</code> of this
                                  node is different from "http://www.w3.org/XML/1998/namespace", if
                                  this node is an attribute and the specified prefix is "xmlns" and
                                  the <code>namespaceURI</code> of this node is different from "
                                  http://www.w3.org/2000/xmlns/", or if this node is an attribute and
                                  the <code>qualifiedName</code> of this node is "xmlns" .<DT><B>Since:</B></DT>
  <DD>DOM Level 2</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="setOwnerDocument(org.w3c.dom.Document)"><!-- --></A><H3>
setOwnerDocument</H3>
<PRE>
public void <B>setOwnerDocument</B>(org.w3c.dom.Document&nbsp;doc)</PRE>
<DL>
<DD>Set the owner document
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>doc</CODE> - </DL>
</DD>
</DL>
<HR>

<A NAME="getOwnerDocument()"><!-- --></A><H3>
getOwnerDocument</H3>
<PRE>
public org.w3c.dom.Document <B>getOwnerDocument</B>()</PRE>
<DL>
<DD>The <code>Document</code> object associated with this node. This is
 also the <code>Document</code> object used to create new nodes. When
 this node is a <code>Document</code> or a <code>DocumentType</code>
 which is not used with any <code>Document</code> yet, this is
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getOwnerDocument</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getAttributes()"><!-- --></A><H3>
getAttributes</H3>
<PRE>
public org.w3c.dom.NamedNodeMap <B>getAttributes</B>()</PRE>
<DL>
<DD>A <code>NamedNodeMap</code> containing the attributes of this node (if
 it is an <code>Element</code>) or <code>null</code> otherwise.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getAttributes</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getFirstChild()"><!-- --></A><H3>
getFirstChild</H3>
<PRE>
public org.w3c.dom.Node <B>getFirstChild</B>()</PRE>
<DL>
<DD>The first child of this node. If there is no such node, this returns
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getFirstChild</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getLastChild()"><!-- --></A><H3>
getLastChild</H3>
<PRE>
public org.w3c.dom.Node <B>getLastChild</B>()</PRE>
<DL>
<DD>The last child of this node. If there is no such node, this returns
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getLastChild</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getNextSibling()"><!-- --></A><H3>
getNextSibling</H3>
<PRE>
public org.w3c.dom.Node <B>getNextSibling</B>()</PRE>
<DL>
<DD>The node immediately following this node. If there is no such node,
 this returns <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getNextSibling</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getParentNode()"><!-- --></A><H3>
getParentNode</H3>
<PRE>
public org.w3c.dom.Node <B>getParentNode</B>()</PRE>
<DL>
<DD>The parent of this node. All nodes, except <code>Attr</code>,
 <code>Document</code>, <code>DocumentFragment</code>,
 <code>Entity</code>, and <code>Notation</code> may have a parent.
 However, if a node has just been created and not yet added to the
 tree, or if it has been removed from the tree, this is
 <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getParentNode</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getPreviousSibling()"><!-- --></A><H3>
getPreviousSibling</H3>
<PRE>
public org.w3c.dom.Node <B>getPreviousSibling</B>()</PRE>
<DL>
<DD>The node immediately preceding this node. If there is no such node,
 this returns <code>null</code>.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getPreviousSibling</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="cloneNode(boolean)"><!-- --></A><H3>
cloneNode</H3>
<PRE>
public org.w3c.dom.Node <B>cloneNode</B>(boolean&nbsp;deep)</PRE>
<DL>
<DD>Returns a duplicate of this node, i.e., serves as a generic copy
 constructor for nodes. The duplicate node has no parent; (
 <code>parentNode</code> is <code>null</code>.).
 <br>Cloning an <code>Element</code> 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 <code>Text</code> node. Cloning an <code>Attribute</code>
 directly, as opposed to be cloned as part of an <code>Element</code>
 cloning operation, returns a specified attribute (
 <code>specified</code> is <code>true</code>). Cloning any other type
 of node simply returns a copy of this node.
 <br>Note that cloning an immutable subtree results in a mutable copy,
 but the children of an <code>EntityReference</code> clone are readonly
 . In addition, clones of unspecified <code>Attr</code> nodes are
 specified. And, cloning <code>Document</code>,
 <code>DocumentType</code>, <code>Entity</code>, and
 <code>Notation</code> nodes is implementation dependent.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>cloneNode</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>deep</CODE> - If <code>true</code>, recursively clone the subtree under
             the specified node; if <code>false</code>, clone only the node
             itself (and its attributes, if it is an <code>Element</code>).
<DT><B>Returns:</B><DD>The duplicate node.</DL>
</DD>
</DL>
<HR>

<A NAME="getChildNodes()"><!-- --></A><H3>
getChildNodes</H3>
<PRE>
public org.w3c.dom.NodeList <B>getChildNodes</B>()</PRE>
<DL>
<DD>A <code>NodeList</code> that contains all children of this node. If
 there are no children, this is a <code>NodeList</code> containing no
 nodes.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>getChildNodes</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="isSupported(java.lang.String, java.lang.String)"><!-- --></A><H3>
isSupported</H3>
<PRE>
public boolean <B>isSupported</B>(java.lang.String&nbsp;feature,
                           java.lang.String&nbsp;version)</PRE>
<DL>
<DD>Tests whether the DOM implementation implements a specific feature and
 that feature is supported by this node.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>isSupported</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>feature</CODE> - The name of the feature to test. This is the same name
                which can be passed to the method <code>hasFeature</code> on
                <code>DOMImplementation</code>.<DD><CODE>version</CODE> - This is the version number of the feature to test. In
                Level 2, version 1, this is the string "2.0". If the version is not
                specified, supporting any version of the feature will cause the
                method to return <code>true</code>.
<DT><B>Returns:</B><DD>Returns <code>true</code> if the specified feature is
         supported on this node, <code>false</code> otherwise.<DT><B>Since:</B></DT>
  <DD>DOM Level 2</DD>
</DL>
</DD>
</DL>
<HR>

<A NAME="appendChild(org.w3c.dom.Node)"><!-- --></A><H3>
appendChild</H3>
<PRE>
public org.w3c.dom.Node <B>appendChild</B>(org.w3c.dom.Node&nbsp;newChild)
                             throws org.w3c.dom.DOMException</PRE>
<DL>
<DD>Adds the node <code>newChild</code> to the end of the list of children
 of this node. If the <code>newChild</code> is already in the tree, it
 is first removed.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>appendChild</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>newChild</CODE> - The node to add.If it is a
                 <code>DocumentFragment</code> object, the entire contents of the
                 document fragment are moved into the child list of this node
<DT><B>Returns:</B><DD>The node added.
<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
                                  allow children of the type of the <code>newChild</code> node, or if
                                  the node to append is one of this node's ancestors or this node
                                  itself.
                                  <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
                                  from a different document than the one that created this node.
                                  <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or
                                  if the previous parent of the node being inserted is readonly.</DL>
</DD>
</DL>
<HR>

<A NAME="removeChild(org.w3c.dom.Node)"><!-- --></A><H3>
removeChild</H3>
<PRE>
public org.w3c.dom.Node <B>removeChild</B>(org.w3c.dom.Node&nbsp;oldChild)
                             throws org.w3c.dom.DOMException</PRE>
<DL>
<DD>Removes the child node indicated by <code>oldChild</code> from the list
 of children, and returns it.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>removeChild</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>oldChild</CODE> - The node being removed.
<DT><B>Returns:</B><DD>The node removed.
<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
                                  <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
                                  this node.</DL>
</DD>
</DL>
<HR>

<A NAME="insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)"><!-- --></A><H3>
insertBefore</H3>
<PRE>
public org.w3c.dom.Node <B>insertBefore</B>(org.w3c.dom.Node&nbsp;newChild,
                                     org.w3c.dom.Node&nbsp;refChild)
                              throws org.w3c.dom.DOMException</PRE>
<DL>
<DD>Inserts the node <code>newChild</code> before the existing child node
 <code>refChild</code>. If <code>refChild</code> is <code>null</code>,
 insert <code>newChild</code> at the end of the list of children.
 <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
 all of its children are inserted, in the same order, before
 <code>refChild</code>. If the <code>newChild</code> is already in the
 tree, it is first removed.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>insertBefore</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>newChild</CODE> - The node to insert.<DD><CODE>refChild</CODE> - The reference node, i.e., the node before which the
                 new node must be inserted.
<DT><B>Returns:</B><DD>The node being inserted.
<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
                                  allow children of the type of the <code>newChild</code> node, or if
                                  the node to insert is one of this node's ancestors or this node
                                  itself.
                                  <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
                                  from a different document than the one that created this node.
                                  <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or
                                  if the parent of the node being inserted is readonly.
                                  <br>NOT_FOUND_ERR: Raised if <code>refChild</code> is not a child of
                                  this node.</DL>
</DD>
</DL>
<HR>

<A NAME="replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)"><!-- --></A><H3>
replaceChild</H3>
<PRE>
public org.w3c.dom.Node <B>replaceChild</B>(org.w3c.dom.Node&nbsp;newChild,
                                     org.w3c.dom.Node&nbsp;oldChild)
                              throws org.w3c.dom.DOMException</PRE>
<DL>
<DD>Replaces the child node <code>oldChild</code> with <code>newChild</code>
 in the list of children, and returns the <code>oldChild</code> node.
 <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
 <code>oldChild</code> is replaced by all of the
 <code>DocumentFragment</code> children, which are inserted in the
 same order. If the <code>newChild</code> is already in the tree, it
 is first removed.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>replaceChild</CODE> in interface <CODE>org.w3c.dom.Node</CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>newChild</CODE> - The new node to put in the child list.<DD><CODE>oldChild</CODE> - The node being replaced in the list.
<DT><B>Returns:</B><DD>The node replaced.
<DT><B>Throws:</B>
<DD><CODE>org.w3c.dom.DOMException</CODE> - HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not
                                  allow children of the type of the <code>newChild</code> node, or if
                                  the node to put in is one of this node's ancestors or this node
                                  itself.
                                  <br>WRONG_DOCUMENT_ERR: Raised if <code>newChild</code> was created
                                  from a different document than the one that created this node.
                                  <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the parent of
                                  the new node is readonly.
                                  <br>NOT_FOUND_ERR: Raised if <code>oldChild</code> is not a child of
                                  this node.</DL>
</DD>
</DL>
<HR>

<A NAME="getValue()"><!-- --></A><H3>
getValue</H3>
<PRE>
public java.lang.String <B>getValue</B>()</PRE>
<DL>
<DD>Returns the the value of the immediate child of this <code>Node</code>
 object if a child exists and its value is text.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../javax/xml/soap/Node.html#getValue()">getValue</A></CODE> in interface <CODE><A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>a <code>String</code> with the text of the immediate child of
         this <code>Node</code> object if (1) there is a child and
         (2) the child is a <code>Text</code> object;
         <code>null</code> otherwise</DL>
</DD>
</DL>
<HR>

<A NAME="setParentElement(javax.xml.soap.SOAPElement)"><!-- --></A><H3>
setParentElement</H3>
<PRE>
public void <B>setParentElement</B>(<A HREF="../../../../javax/xml/soap/SOAPElement.html" title="interface in javax.xml.soap">SOAPElement</A>&nbsp;parent)
                      throws <A HREF="../../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD>Sets the parent of this <code>Node</code> object to the given
 <code>SOAPElement</code> object.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../javax/xml/soap/Node.html#setParentElement(javax.xml.soap.SOAPElement)">setParentElement</A></CODE> in interface <CODE><A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parent</CODE> - the <code>SOAPElement</code> object to be set as
               the parent of this <code>Node</code> object
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE> - if there is a problem in setting the
                                      parent to the given element<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/axis/message/NodeImpl.html#getParentElement()"><CODE>getParentElement()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getParentElement()"><!-- --></A><H3>
getParentElement</H3>
<PRE>
public <A HREF="../../../../javax/xml/soap/SOAPElement.html" title="interface in javax.xml.soap">SOAPElement</A> <B>getParentElement</B>()</PRE>
<DL>
<DD>Returns the parent element of this <code>Node</code> object.
 This method can throw an <code>UnsupportedOperationException</code>
 if the tree is not kept in memory.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../javax/xml/soap/Node.html#getParentElement()">getParentElement</A></CODE> in interface <CODE><A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A></CODE></DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>the <code>SOAPElement</code> object that is the parent of
         this <code>Node</code> object or <code>null</code> if this
         <code>Node</code> object is root
<DT><B>Throws:</B>
<DD><CODE>java.lang.UnsupportedOperationException</CODE> - if the whole tree is not kept in memory<DT><B>See Also:</B><DD><A HREF="../../../../org/apache/axis/message/NodeImpl.html#setParentElement(javax.xml.soap.SOAPElement)"><CODE>setParentElement(javax.xml.soap.SOAPElement)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="detachNode()"><!-- --></A><H3>
detachNode</H3>
<PRE>
public void <B>detachNode</B>()</PRE>
<DL>
<DD>Removes this <code>Node</code> object from the tree. Once
 removed, this node can be garbage collected if there are no
 application references to it.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../javax/xml/soap/Node.html#detachNode()">detachNode</A></CODE> in interface <CODE><A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="recycleNode()"><!-- --></A><H3>
recycleNode</H3>
<PRE>
public void <B>recycleNode</B>()</PRE>
<DL>
<DD>Notifies the implementation that this <code>Node</code>
 object is no longer being used by the application and that the
 implementation is free to reuse this object for nodes that may
 be created later.
 <P>
 Calling the method <code>recycleNode</code> implies that the method
 <code>detachNode</code> has been called previously.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../javax/xml/soap/Node.html#recycleNode()">recycleNode</A></CODE> in interface <CODE><A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setValue(java.lang.String)"><!-- --></A><H3>
setValue</H3>
<PRE>
public void <B>setValue</B>(java.lang.String&nbsp;value)</PRE>
<DL>
<DD>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.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../javax/xml/soap/Node.html#setValue(java.lang.String)">setValue</A></CODE> in interface <CODE><A HREF="../../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>value</CODE> - the text to set
<DT><B>Throws:</B>
<DD><CODE>java.lang.IllegalStateException</CODE> - if the node is not a Text  node and
                               either has more than one child node or has a child node that
                               is not a Text node</DL>
</DD>
</DL>
<HR>

<A NAME="makeAttributesEditable()"><!-- --></A><H3>
makeAttributesEditable</H3>
<PRE>
protected org.xml.sax.helpers.AttributesImpl <B>makeAttributesEditable</B>()</PRE>
<DL>
<DD>make the attributes editable
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>AttributesImpl</DL>
</DD>
</DL>
<HR>

<A NAME="convertAttrSAXtoDOM(org.xml.sax.Attributes)"><!-- --></A><H3>
convertAttrSAXtoDOM</H3>
<PRE>
protected org.w3c.dom.NamedNodeMap <B>convertAttrSAXtoDOM</B>(org.xml.sax.Attributes&nbsp;saxAttr)</PRE>
<DL>
<DD>The internal representation of Attributes cannot help being changed
 It is because Attribute is not immutible Type, so if we keep out value and
 just return it in another form, the application may chnae it, which we cannot
 detect without some kind back track method (call back notifying the chnage.)
 I am not sure which approach is better.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="initializeChildren()"><!-- --></A><H3>
initializeChildren</H3>
<PRE>
protected void <B>initializeChildren</B>()</PRE>
<DL>
<DD>Initialize the children array
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getParent()"><!-- --></A><H3>
getParent</H3>
<PRE>
protected <A HREF="../../../../org/apache/axis/message/NodeImpl.html" title="class in org.apache.axis.message">NodeImpl</A> <B>getParent</B>()</PRE>
<DL>
<DD>get the parent node
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD>parent node</DL>
</DD>
</DL>
<HR>

<A NAME="setParent(org.apache.axis.message.NodeImpl)"><!-- --></A><H3>
setParent</H3>
<PRE>
protected void <B>setParent</B>(<A HREF="../../../../org/apache/axis/message/NodeImpl.html" title="class in org.apache.axis.message">NodeImpl</A>&nbsp;parent)
                  throws <A HREF="../../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></PRE>
<DL>
<DD>Set the parent node and invoke appendChild(this) to 
 add this node to the parent's list of children.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>parent</CODE> - 
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</A></CODE></DL>
</DD>
</DL>
<HR>

<A NAME="output(org.apache.axis.encoding.SerializationContext)"><!-- --></A><H3>
output</H3>
<PRE>
public void <B>output</B>(<A HREF="../../../../org/apache/axis/encoding/SerializationContext.html" title="class in org.apache.axis.encoding">SerializationContext</A>&nbsp;context)
            throws java.lang.Exception</PRE>
<DL>
<DD>print the contents of this node
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>context</CODE> - 
<DT><B>Throws:</B>
<DD><CODE>java.lang.Exception</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="isDirty()"><!-- --></A><H3>
isDirty</H3>
<PRE>
public boolean <B>isDirty</B>()</PRE>
<DL>
<DD>get the dirty bit
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>

<DT><B>Returns:</B><DD></DL>
</DD>
</DL>
<HR>

<A NAME="setDirty(boolean)"><!-- --></A><H3>
setDirty</H3>
<PRE>
public void <B>setDirty</B>(boolean&nbsp;dirty)</PRE>
<DL>
<DD>set the dirty bit. will also set our parent as dirty, if there is one.
 Note that clearing the dirty bit does <i>not</i> propagate upwards.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>dirty</CODE> - new value of the dirty bit</DL>
</DD>
</DL>
<HR>

<A NAME="setDirty()"><!-- --></A><H3>
setDirty</H3>
<PRE>
public void <B>setDirty</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="reset()"><!-- --></A><H3>
reset</H3>
<PRE>
public void <B>reset</B>()</PRE>
<DL>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/NodeImpl.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/axis/message/NamedNodeMapImpl.html" title="class in org.apache.axis.message"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/axis/message/NullAttributes.html" title="class in org.apache.axis.message"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="NodeImpl.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>

</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright © 2005 Apache Web Services Project. All Rights Reserved.
</BODY>
</HTML>
