📄 jaxpdom4.html
字号:
Define the AdapterNode Class</h4><a name="wp64253"> </a><p class="pBody">Start by importing the tree, event, and utility classes you're going to need to make this work: </p><div class="pPreformattedRelative"><pre class="pPreformattedRelative">// For creating a TreeModel<code class="cCodeBold">import javax.swing.tree.*;import javax.swing.event.*;import java.util.*;</code>public class DomEcho extends JPanel{ <a name="wp64254"> </a></pre></div><a name="wp64256"> </a><p class="pBody">Moving back down to the end of the program, define a set of strings for the node element types: </p><div class="pPreformattedRelative"><pre class="pPreformattedRelative"> ...} // makeFrame<a name="wp64257"> </a>// An array of names for DOM node-types// (Array indexes = nodeType() values.)<code class="cCodeBold">static final String[] typeName = { "none", "Element", "Attr", "Text", "CDATA", "EntityRef", "Entity", "ProcInstr", "Comment", "Document", "DocType", "DocFragment", "Notation",};</code><a name="wp64258"> </a></pre></div><a name="wp64259"> </a><p class="pBody">} // DomEcho</p><a name="wp64260"> </a><p class="pBody">These are the strings that will be displayed in the <code class="cCode">JTree</code>. The specification of these nodes types can be found in the Document Object Model (DOM) Level 2 Core Specification at <code class="cCode">http://www.w3.org/TR/2000/REC-DOM/Level-2-Core-20001113</code>, under the specification for Node. That table is reproduced below, with the headings modified for clarity, and with the <code class="cCode">nodeType</code>() column added: </p><a name="wp64405"> </a><p class="pBody"></p><div align="left"><table border="1" summary="Node Types " id="wp80083"> <caption><a name="wp80083"> </a><div class="pTableTitle">Table 6-1 Node Types </div></caption> <tr align="center"> <th><a name="wp80234"> </a><div class="pCellHeading">Node</div></th> <th><a name="wp80236"> </a><div class="pCellHeading">nodeName()</div></th> <th><a name="wp80238"> </a><div class="pCellHeading">nodeValue()</div></th> <th><a name="wp80240"> </a><div class="pCellHeading">attributes</div></th> <th><a name="wp80242"> </a><div class="pCellHeading">nodeType()</div></th></tr> <tr align="left"> <td><a name="wp80103"> </a><div class="pCellBody"> Attr</div></td> <td><a name="wp80105"> </a><div class="pCellBody">name of attribute</div></td> <td><a name="wp80107"> </a><div class="pCellBody">value of attribute</div></td> <td><a name="wp80109"> </a><div class="pCellBody">null</div></td> <td><a name="wp80111"> </a><div class="pCellBody"> 2</div></td></tr> <tr align="left"> <td><a name="wp80113"> </a><div class="pCellBody"> CDATASection</div></td> <td><a name="wp80115"> </a><div class="pCellBody">#cdata-section</div></td> <td><a name="wp80117"> </a><div class="pCellBody">content of <br />the CDATA<br />section</div></td> <td><a name="wp80119"> </a><div class="pCellBody">null</div></td> <td><a name="wp80121"> </a><div class="pCellBody"> 4</div></td></tr> <tr align="left"> <td><a name="wp80123"> </a><div class="pCellBody"> Comment</div></td> <td><a name="wp80125"> </a><div class="pCellBody">#comment</div></td> <td><a name="wp80127"> </a><div class="pCellBody">content of the comment</div></td> <td><a name="wp80129"> </a><div class="pCellBody">null</div></td> <td><a name="wp80131"> </a><div class="pCellBody"> 8</div></td></tr> <tr align="left"> <td><a name="wp80133"> </a><div class="pCellBody"> Document</div></td> <td><a name="wp80135"> </a><div class="pCellBody">#document</div></td> <td><a name="wp80137"> </a><div class="pCellBody">null</div></td> <td><a name="wp80139"> </a><div class="pCellBody">null</div></td> <td><a name="wp80141"> </a><div class="pCellBody"> 9</div></td></tr> <tr align="left"> <td><a name="wp80143"> </a><div class="pCellBody"> DocumentFragment</div></td> <td><a name="wp80145"> </a><div class="pCellBody">#document-fragment</div></td> <td><a name="wp80147"> </a><div class="pCellBody">null</div></td> <td><a name="wp80149"> </a><div class="pCellBody">null</div></td> <td><a name="wp80151"> </a><div class="pCellBody"> 11</div></td></tr> <tr align="left"> <td><a name="wp80153"> </a><div class="pCellBody"> DocumentType</div></td> <td><a name="wp80155"> </a><div class="pCellBody">document type name</div></td> <td><a name="wp80157"> </a><div class="pCellBody">null</div></td> <td><a name="wp80159"> </a><div class="pCellBody">null</div></td> <td><a name="wp80161"> </a><div class="pCellBody"> 10</div></td></tr> <tr align="left"> <td><a name="wp80163"> </a><div class="pCellBody"> Element</div></td> <td><a name="wp80165"> </a><div class="pCellBody">tag name</div></td> <td><a name="wp80167"> </a><div class="pCellBody">null</div></td> <td><a name="wp80169"> </a><div class="pCellBody">NamedNodeMap</div></td> <td><a name="wp80171"> </a><div class="pCellBody"> 1</div></td></tr> <tr align="left"> <td><a name="wp80173"> </a><div class="pCellBody"> Entity</div></td> <td><a name="wp80175"> </a><div class="pCellBody">entity name</div></td> <td><a name="wp80177"> </a><div class="pCellBody">null</div></td> <td><a name="wp80179"> </a><div class="pCellBody">null</div></td> <td><a name="wp80181"> </a><div class="pCellBody"> 6</div></td></tr> <tr align="left"> <td><a name="wp80183"> </a><div class="pCellBody"> EntityReference</div></td> <td><a name="wp80185"> </a><div class="pCellBody">name of entity referenced</div></td> <td><a name="wp80187"> </a><div class="pCellBody">null</div></td> <td><a name="wp80189"> </a><div class="pCellBody">null</div></td> <td><a name="wp80191"> </a><div class="pCellBody"> 5</div></td></tr> <tr align="left"> <td><a name="wp80193"> </a><div class="pCellBody"> Notation</div></td> <td><a name="wp80195"> </a><div class="pCellBody">notation name</div></td> <td><a name="wp80197"> </a><div class="pCellBody">null</div></td> <td><a name="wp80199"> </a><div class="pCellBody">null</div></td> <td><a name="wp80201"> </a><div class="pCellBody"> 12</div></td></tr> <tr align="left"> <td><a name="wp80203"> </a><div class="pCellBody"> ProcessingInstruction</div></td> <td><a name="wp80205"> </a><div class="pCellBody">target</div></td> <td><a name="wp80207"> </a><div class="pCellBody">entire content<br />excluding the<br />target</div></td> <td><a name="wp80209"> </a><div class="pCellBody">null</div></td> <td><a name="wp80211"> </a><div class="pCellBody"> 7</div></td></tr> <tr align="left"> <td><a name="wp80213"> </a><div class="pCellBody"> Text</div></td> <td><a name="wp80215"> </a><div class="pCellBody">#text</div></td> <td><a name="wp80217"> </a><div class="pCellBody">content of the text node</div></td> <td><a name="wp80219"> </a><div class="pCellBody">null</div></td> <td><a name="wp80221"> </a><div class="pCellBody"> 3</div></td></tr></table></div><p class="pBody"></p><a name="wp64406"> </a><p class="pDefinitionTerm">Suggestion:</p><a name="wp64407"> </a><p class="pDefinition">Print this table and keep it handy. You need it when working with the DOM, because all of these types are intermixed in a DOM tree. So your code is forever asking, "Is this the kind of node I'm interested in?". </p><a name="wp64408"> </a><p class="pBody">Next, define the <code class="cCode">AdapterNode</code> wrapper for DOM nodes as an inner class: </p><div class="pPreformattedRelative"><pre class="pPreformattedRelative">static final String[] typeName = { ...};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -