blob: 02d44c2126fe506bf6e103841f5afcf70d16dd4c [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_281) on Sun Jan 15 15:58:35 CET 2023 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>NodeModel (FreeMarker 2.3.32 API)</title>
<meta name="date" content="2023-01-15">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="NodeModel (FreeMarker 2.3.32 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":9,"i17":10,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":41,"i26":41,"i27":9,"i28":9,"i29":10,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/NodeModel.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../freemarker/ext/dom/Transform.html" title="class in freemarker.ext.dom"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?freemarker/ext/dom/NodeModel.html" target="_top">Frames</a></li>
<li><a href="NodeModel.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">freemarker.ext.dom</div>
<h2 title="Class NodeModel" class="title">Class NodeModel</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>freemarker.ext.dom.NodeModel</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>freemarker.core._UnexpectedTypeErrorExplainerTemplateModel, <a href="../../../freemarker/ext/util/WrapperTemplateModel.html" title="interface in freemarker.ext.util">WrapperTemplateModel</a>, <a href="../../../freemarker/template/AdapterTemplateModel.html" title="interface in freemarker.template">AdapterTemplateModel</a>, <a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a>, <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>, <a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a>, <a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a>, <a href="../../../freemarker/template/TemplateSequenceModel.html" title="interface in freemarker.template">TemplateSequenceModel</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">NodeModel</span>
extends java.lang.Object
implements <a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a>, <a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a>, <a href="../../../freemarker/template/TemplateSequenceModel.html" title="interface in freemarker.template">TemplateSequenceModel</a>, <a href="../../../freemarker/template/AdapterTemplateModel.html" title="interface in freemarker.template">AdapterTemplateModel</a>, <a href="../../../freemarker/ext/util/WrapperTemplateModel.html" title="interface in freemarker.ext.util">WrapperTemplateModel</a>, freemarker.core._UnexpectedTypeErrorExplainerTemplateModel</pre>
<div class="block">A base class for wrapping a single W3C DOM Node as a FreeMarker template model.
<p>
Note that <a href="../../../freemarker/template/DefaultObjectWrapper.html" title="class in freemarker.template"><code>DefaultObjectWrapper</code></a> automatically wraps W3C DOM <code>Node</code>-s into this, so you may need do that
with this class manually. However, before dropping the <code>Node</code>-s into the data-model, you certainly want to
apply <a href="../../../freemarker/ext/dom/NodeModel.html#simplify-org.w3c.dom.Node-"><code>simplify(Node)</code></a> on them.
<p>
This class is not guaranteed to be thread safe, so instances of this shouldn't be used as shared variable (
<a href="../../../freemarker/template/Configuration.html#setSharedVariable-java.lang.String-java.lang.Object-"><code>Configuration.setSharedVariable(String, Object)</code></a>).
<p>
To represent a node sequence (such as a query result) of exactly 1 nodes, this class should be used instead of
<code>NodeListModel</code>, as it adds extra capabilities by utilizing that we have exactly 1 node. If you need to wrap a
node sequence of 0 or multiple nodes, you must use <code>NodeListModel</code>.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.freemarker.template.TemplateModel">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;freemarker.template.<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></h3>
<code><a href="../../../freemarker/template/TemplateModel.html#NOTHING">NOTHING</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#NodeModel-org.w3c.dom.Node-">NodeModel</a></span>(org.w3c.dom.Node&nbsp;node)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#equals-java.lang.Object-">equals</a></span>(java.lang.Object&nbsp;other)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#exec-java.util.List-">exec</a></span>(java.util.List&nbsp;args)</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.Object[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#explainTypeError-java.lang.Class:A-">explainTypeError</a></span>(java.lang.Class[]&nbsp;expectedClasses)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#get-int-">get</a></span>(int&nbsp;i)</code>
<div class="block">Retrieves the i-th template model in this sequence.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#get-java.lang.String-">get</a></span>(java.lang.String&nbsp;key)</code>
<div class="block">Gets a <tt>TemplateModel</tt> from the hash.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getAdaptedObject-java.lang.Class-">getAdaptedObject</a></span>(java.lang.Class&nbsp;hint)</code>
<div class="block">Retrieves the underlying object, or some other object semantically
equivalent to its value narrowed by the class hint.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../freemarker/template/TemplateSequenceModel.html" title="interface in freemarker.template">TemplateSequenceModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getChildNodes--">getChildNodes</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static javax.xml.parsers.DocumentBuilderFactory</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getDocumentBuilderFactory--">getDocumentBuilderFactory</a></span>()</code>
<div class="block">Returns the DOM parser implementation that is used when building <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a> objects from XML files or from
<code>InputStream</code> with the static convenience methods of <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a>.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static org.xml.sax.ErrorHandler</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getErrorHandler--">getErrorHandler</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getNextSibling--">getNextSibling</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>org.w3c.dom.Node</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getNode--">getNode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getNodeNamespace--">getNodeNamespace</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getNodeType--">getNodeType</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getParentNode--">getParentNode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getPreviousSibling--">getPreviousSibling</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getWrappedObject--">getWrappedObject</a></span>()</code>
<div class="block">Retrieves the original object wrapped by this model.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static java.lang.Class</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#getXPathSupportClass--">getXPathSupportClass</a></span>()</code>
<div class="block">Get the currently used freemarker.ext.dom.XPathSupport used as the XPath engine.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#mergeAdjacentText-org.w3c.dom.Node-">mergeAdjacentText</a></span>(org.w3c.dom.Node&nbsp;parent)</code>
<div class="block">Merges adjacent text nodes (where CDATA counts as text node too).</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>static <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#parse-java.io.File-">parse</a></span>(java.io.File&nbsp;f)</code>
<div class="block">Same as <a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-boolean-boolean-"><code>parse(source, true, true)</code></a>, but loads from a <code>File</code>;
don't miss the security warnings documented there.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>static <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#parse-java.io.File-boolean-boolean-">parse</a></span>(java.io.File&nbsp;f,
boolean&nbsp;removeComments,
boolean&nbsp;removePIs)</code>
<div class="block">Same as <a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-boolean-boolean-"><code>parse(InputSource, boolean, boolean)</code></a>, but loads from a <code>File</code>; don't miss the security
warnings documented there.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>static <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-">parse</a></span>(org.xml.sax.InputSource&nbsp;is)</code>
<div class="block">Same as <a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-boolean-boolean-"><code>parse(is, true, true)</code></a>; don't miss the security warnings
documented there.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>static <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-boolean-boolean-">parse</a></span>(org.xml.sax.InputSource&nbsp;is,
boolean&nbsp;removeComments,
boolean&nbsp;removePIs)</code>
<div class="block">Convenience method to create a <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a> from a SAX <code>InputSource</code>; please see the security warning
further down.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#removeComments-org.w3c.dom.Node-">removeComments</a></span>(org.w3c.dom.Node&nbsp;parent)</code>
<div class="block">Recursively removes all comment nodes from the subtree.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#removePIs-org.w3c.dom.Node-">removePIs</a></span>(org.w3c.dom.Node&nbsp;parent)</code>
<div class="block">Recursively removes all processing instruction nodes from the subtree.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#setDocumentBuilderFactory-javax.xml.parsers.DocumentBuilderFactory-">setDocumentBuilderFactory</a></span>(javax.xml.parsers.DocumentBuilderFactory&nbsp;docBuilderFactory)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">It's a bad practice to change static fields, as if multiple independent components do that in the
same JVM, they unintentionally affect each other. Therefore it's recommended to leave this static
value at its default.</span></div>
</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#setErrorHandler-org.xml.sax.ErrorHandler-">setErrorHandler</a></span>(org.xml.sax.ErrorHandler&nbsp;errorHandler)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">It's a bad practice to change static fields, as if multiple independent components do that in the
same JVM, they unintentionally affect each other. Therefore it's recommended to leave this static
value at its default.</span></div>
</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#setXPathSupportClass-java.lang.Class-">setXPathSupportClass</a></span>(java.lang.Class&nbsp;cl)</code>
<div class="block">Set an alternative implementation of freemarker.ext.dom.XPathSupport to use
as the XPath engine.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#simplify-org.w3c.dom.Node-">simplify</a></span>(org.w3c.dom.Node&nbsp;parent)</code>
<div class="block">Removes all comments and processing instruction, and unites adjacent text nodes (here CDATA counts as text as
well).</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#size--">size</a></span>()</code>
<div class="block">Always returns 1.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#useDefaultXPathSupport--">useDefaultXPathSupport</a></span>()</code>
<div class="block">Tells the system to use (restore) the default (initial) XPath system used by
this FreeMarker version on this system.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#useJaxenXPathSupport--">useJaxenXPathSupport</a></span>()</code>
<div class="block">Convenience method.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#useSunInternalXPathSupport--">useSunInternalXPathSupport</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#useXalanXPathSupport--">useXalanXPathSupport</a></span>()</code>
<div class="block">Convenience method.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>static <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/dom/NodeModel.html#wrap-org.w3c.dom.Node-">wrap</a></span>(org.w3c.dom.Node&nbsp;node)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.freemarker.template.TemplateNodeModel">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;freemarker.template.<a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a></h3>
<code><a href="../../../freemarker/template/TemplateNodeModel.html#getNodeName--">getNodeName</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.freemarker.template.TemplateHashModel">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;freemarker.template.<a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a></h3>
<code><a href="../../../freemarker/template/TemplateHashModel.html#isEmpty--">isEmpty</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="NodeModel-org.w3c.dom.Node-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>NodeModel</h4>
<pre>protected&nbsp;NodeModel(org.w3c.dom.Node&nbsp;node)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="setDocumentBuilderFactory-javax.xml.parsers.DocumentBuilderFactory-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDocumentBuilderFactory</h4>
<pre>@Deprecated
public static&nbsp;void&nbsp;setDocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory&nbsp;docBuilderFactory)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">It's a bad practice to change static fields, as if multiple independent components do that in the
same JVM, they unintentionally affect each other. Therefore it's recommended to leave this static
value at its default.</span></div>
<div class="block">Sets the DOM parser implementation to be used when building <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a> objects from XML files or from
<code>InputStream</code> with the static convenience methods of <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a>. Otherwise FreeMarker itself doesn't
use this.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/ext/dom/NodeModel.html#getDocumentBuilderFactory--"><code>getDocumentBuilderFactory()</code></a></dd>
</dl>
</li>
</ul>
<a name="getDocumentBuilderFactory--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDocumentBuilderFactory</h4>
<pre>public static&nbsp;javax.xml.parsers.DocumentBuilderFactory&nbsp;getDocumentBuilderFactory()</pre>
<div class="block">Returns the DOM parser implementation that is used when building <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a> objects from XML files or from
<code>InputStream</code> with the static convenience methods of <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a>. Otherwise FreeMarker itself doesn't
use this.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/ext/dom/NodeModel.html#setDocumentBuilderFactory-javax.xml.parsers.DocumentBuilderFactory-"><code>setDocumentBuilderFactory(DocumentBuilderFactory)</code></a></dd>
</dl>
</li>
</ul>
<a name="setErrorHandler-org.xml.sax.ErrorHandler-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setErrorHandler</h4>
<pre>@Deprecated
public static&nbsp;void&nbsp;setErrorHandler(org.xml.sax.ErrorHandler&nbsp;errorHandler)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">It's a bad practice to change static fields, as if multiple independent components do that in the
same JVM, they unintentionally affect each other. Therefore it's recommended to leave this static
value at its default.</span></div>
<div class="block">Sets the error handler to use when parsing the document with the static convenience methods of <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/ext/dom/NodeModel.html#getErrorHandler--"><code>getErrorHandler()</code></a></dd>
</dl>
</li>
</ul>
<a name="getErrorHandler--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getErrorHandler</h4>
<pre>public static&nbsp;org.xml.sax.ErrorHandler&nbsp;getErrorHandler()</pre>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/ext/dom/NodeModel.html#setErrorHandler-org.xml.sax.ErrorHandler-"><code>setErrorHandler(ErrorHandler)</code></a></dd>
</dl>
</li>
</ul>
<a name="parse-org.xml.sax.InputSource-boolean-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parse</h4>
<pre>public static&nbsp;<a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a>&nbsp;parse(org.xml.sax.InputSource&nbsp;is,
boolean&nbsp;removeComments,
boolean&nbsp;removePIs)
throws org.xml.sax.SAXException,
java.io.IOException,
javax.xml.parsers.ParserConfigurationException</pre>
<div class="block">Convenience method to create a <a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom"><code>NodeModel</code></a> from a SAX <code>InputSource</code>; please see the security warning
further down. Adjacent text nodes will be merged (and CDATA sections are considered as text nodes) as with
<a href="../../../freemarker/ext/dom/NodeModel.html#mergeAdjacentText-org.w3c.dom.Node-"><code>mergeAdjacentText(Node)</code></a>. Further simplifications are applied depending on the parameters. If all
simplifications are turned on, then it applies <a href="../../../freemarker/ext/dom/NodeModel.html#simplify-org.w3c.dom.Node-"><code>simplify(Node)</code></a> on the loaded DOM.
<p>
Note that <code>parse(...)</code> is only a convenience method, and FreeMarker itself doesn't use it (except when you
call the other similar static convenience methods, as they may build on each other). In particular, if you want
full control over the <code>DocumentBuilderFactory</code> used, create the <code>Node</code> with your own
<code>DocumentBuilderFactory</code>, apply <a href="../../../freemarker/ext/dom/NodeModel.html#simplify-org.w3c.dom.Node-"><code>simplify(Node)</code></a> (or such) on it, then call
<a href="../../../freemarker/ext/dom/NodeModel.html#wrap-org.w3c.dom.Node-"><code>wrap(Node)</code></a>.
<p>
<b>Security warning:</b> If the XML to load is coming from a source that you can't fully trust, you shouldn't use
this method, as the <code>DocumentBuilderFactory</code> it uses by default supports external entities, and so it
doesn't prevent XML External Entity (XXE) attacks. Note that XXE attacks are not specific to FreeMarker, they
affect all XML parsers in general. If that's a problem in your application, OWASP has a cheat sheet to set up a
<code>DocumentBuilderFactory</code> that has limited functionality but is immune to XXE attacks. Because it's just a
convenience method, you can just use your own <code>DocumentBuilderFactory</code> and do a few extra steps instead
(see earlier).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>removeComments</code> - Whether to remove all comment nodes (recursively); this is like calling <a href="../../../freemarker/ext/dom/NodeModel.html#removeComments-org.w3c.dom.Node-"><code>removeComments(Node)</code></a></dd>
<dd><code>removePIs</code> - Whether to remove all processing instruction nodes (recursively); this is like calling
<a href="../../../freemarker/ext/dom/NodeModel.html#removePIs-org.w3c.dom.Node-"><code>removePIs(Node)</code></a></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.xml.sax.SAXException</code></dd>
<dd><code>java.io.IOException</code></dd>
<dd><code>javax.xml.parsers.ParserConfigurationException</code></dd>
</dl>
</li>
</ul>
<a name="parse-org.xml.sax.InputSource-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parse</h4>
<pre>public static&nbsp;<a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a>&nbsp;parse(org.xml.sax.InputSource&nbsp;is)
throws org.xml.sax.SAXException,
java.io.IOException,
javax.xml.parsers.ParserConfigurationException</pre>
<div class="block">Same as <a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-boolean-boolean-"><code>parse(is, true, true)</code></a>; don't miss the security warnings
documented there.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.xml.sax.SAXException</code></dd>
<dd><code>java.io.IOException</code></dd>
<dd><code>javax.xml.parsers.ParserConfigurationException</code></dd>
</dl>
</li>
</ul>
<a name="parse-java.io.File-boolean-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parse</h4>
<pre>public static&nbsp;<a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a>&nbsp;parse(java.io.File&nbsp;f,
boolean&nbsp;removeComments,
boolean&nbsp;removePIs)
throws org.xml.sax.SAXException,
java.io.IOException,
javax.xml.parsers.ParserConfigurationException</pre>
<div class="block">Same as <a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-boolean-boolean-"><code>parse(InputSource, boolean, boolean)</code></a>, but loads from a <code>File</code>; don't miss the security
warnings documented there.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.xml.sax.SAXException</code></dd>
<dd><code>java.io.IOException</code></dd>
<dd><code>javax.xml.parsers.ParserConfigurationException</code></dd>
</dl>
</li>
</ul>
<a name="parse-java.io.File-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parse</h4>
<pre>public static&nbsp;<a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a>&nbsp;parse(java.io.File&nbsp;f)
throws org.xml.sax.SAXException,
java.io.IOException,
javax.xml.parsers.ParserConfigurationException</pre>
<div class="block">Same as <a href="../../../freemarker/ext/dom/NodeModel.html#parse-org.xml.sax.InputSource-boolean-boolean-"><code>parse(source, true, true)</code></a>, but loads from a <code>File</code>;
don't miss the security warnings documented there.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.xml.sax.SAXException</code></dd>
<dd><code>java.io.IOException</code></dd>
<dd><code>javax.xml.parsers.ParserConfigurationException</code></dd>
</dl>
</li>
</ul>
<a name="getNode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNode</h4>
<pre>public&nbsp;org.w3c.dom.Node&nbsp;getNode()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the underling W3C DOM Node object that this TemplateNodeModel
is wrapping.</dd>
</dl>
</li>
</ul>
<a name="get-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre>public&nbsp;<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;get(java.lang.String&nbsp;key)
throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../freemarker/template/TemplateHashModel.html#get-java.lang.String-">TemplateHashModel</a></code></span></div>
<div class="block">Gets a <tt>TemplateModel</tt> from the hash.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateHashModel.html#get-java.lang.String-">get</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - the name by which the <tt>TemplateModel</tt>
is identified in the template.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the <tt>TemplateModel</tt> referred to by the key,
or null if not found.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="getParentNode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParentNode</h4>
<pre>public&nbsp;<a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a>&nbsp;getParentNode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateNodeModel.html#getParentNode--">getParentNode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the parent of this node or null, in which case
this node is the root of the tree.</dd>
</dl>
</li>
</ul>
<a name="getPreviousSibling--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPreviousSibling</h4>
<pre>public&nbsp;<a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a>&nbsp;getPreviousSibling()
throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateNodeModelEx.html#getPreviousSibling--">getPreviousSibling</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The immediate previous sibling of this node, or <code>null</code> if there's no such node.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="getNextSibling--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNextSibling</h4>
<pre>public&nbsp;<a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a>&nbsp;getNextSibling()
throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateNodeModelEx.html#getNextSibling--">getNextSibling</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateNodeModelEx.html" title="interface in freemarker.template">TemplateNodeModelEx</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The immediate next sibling of this node, or <code>null</code> if there's no such node.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="getChildNodes--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getChildNodes</h4>
<pre>public&nbsp;<a href="../../../freemarker/template/TemplateSequenceModel.html" title="interface in freemarker.template">TemplateSequenceModel</a>&nbsp;getChildNodes()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateNodeModel.html#getChildNodes--">getChildNodes</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a sequence containing this node's children.
If the returned value is null or empty, this is essentially
a leaf node.</dd>
</dl>
</li>
</ul>
<a name="getNodeType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNodeType</h4>
<pre>public final&nbsp;java.lang.String&nbsp;getNodeType()
throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateNodeModel.html#getNodeType--">getNodeType</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a String describing the <em>type</em> of node this is.
In the W3C DOM, this should be "element", "text", "attribute", etc.
A TemplateNodeModel implementation that models other kinds of
trees could return whatever it appropriate for that application. It
can be null, if you don't want to use node-types.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="exec-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exec</h4>
<pre>public&nbsp;<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;exec(java.util.List&nbsp;args)
throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
</dl>
</li>
</ul>
<a name="size--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>size</h4>
<pre>public final&nbsp;int&nbsp;size()</pre>
<div class="block">Always returns 1.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateSequenceModel.html#size--">size</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateSequenceModel.html" title="interface in freemarker.template">TemplateSequenceModel</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the number of items in the list.</dd>
</dl>
</li>
</ul>
<a name="get-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre>public final&nbsp;<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;get(int&nbsp;i)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../freemarker/template/TemplateSequenceModel.html#get-int-">TemplateSequenceModel</a></code></span></div>
<div class="block">Retrieves the i-th template model in this sequence.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateSequenceModel.html#get-int-">get</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateSequenceModel.html" title="interface in freemarker.template">TemplateSequenceModel</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the item at the specified index, or <code>null</code> if the index is out of bounds. Note that a
<code>null</code> value is interpreted by FreeMarker as "variable does not exist", and accessing a
missing variables is usually considered as an error in the FreeMarker Template Language, so the usage of
a bad index will not remain hidden, unless the default value for that case was also specified in the
template.</dd>
</dl>
</li>
</ul>
<a name="getNodeNamespace--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNodeNamespace</h4>
<pre>public&nbsp;java.lang.String&nbsp;getNodeNamespace()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/TemplateNodeModel.html#getNodeNamespace--">getNodeNamespace</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/TemplateNodeModel.html" title="interface in freemarker.template">TemplateNodeModel</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the XML namespace URI with which this node is
associated. If this TemplateNodeModel implementation is
not XML-related, it will almost certainly be null. Even
for XML nodes, this will often be null.</dd>
</dl>
</li>
</ul>
<a name="hashCode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public final&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(java.lang.Object&nbsp;other)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>equals</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="wrap-org.w3c.dom.Node-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>wrap</h4>
<pre>public static&nbsp;<a href="../../../freemarker/ext/dom/NodeModel.html" title="class in freemarker.ext.dom">NodeModel</a>&nbsp;wrap(org.w3c.dom.Node&nbsp;node)</pre>
</li>
</ul>
<a name="removeComments-org.w3c.dom.Node-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeComments</h4>
<pre>public static&nbsp;void&nbsp;removeComments(org.w3c.dom.Node&nbsp;parent)</pre>
<div class="block">Recursively removes all comment nodes from the subtree.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/ext/dom/NodeModel.html#simplify-org.w3c.dom.Node-"><code>simplify(org.w3c.dom.Node)</code></a></dd>
</dl>
</li>
</ul>
<a name="removePIs-org.w3c.dom.Node-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removePIs</h4>
<pre>public static&nbsp;void&nbsp;removePIs(org.w3c.dom.Node&nbsp;parent)</pre>
<div class="block">Recursively removes all processing instruction nodes from the subtree.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/ext/dom/NodeModel.html#simplify-org.w3c.dom.Node-"><code>simplify(org.w3c.dom.Node)</code></a></dd>
</dl>
</li>
</ul>
<a name="mergeAdjacentText-org.w3c.dom.Node-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mergeAdjacentText</h4>
<pre>public static&nbsp;void&nbsp;mergeAdjacentText(org.w3c.dom.Node&nbsp;parent)</pre>
<div class="block">Merges adjacent text nodes (where CDATA counts as text node too). Operates recursively on the entire subtree.
The merged node will have the type of the first node of the adjacent merged nodes.
<p>Because XPath assumes that there are no adjacent text nodes in the tree, not doing this can have
undesirable side effects. Xalan queries like <code>text()</code> will only return the first of a list of matching
adjacent text nodes instead of all of them, while Jaxen will return all of them as intuitively expected.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/ext/dom/NodeModel.html#simplify-org.w3c.dom.Node-"><code>simplify(org.w3c.dom.Node)</code></a></dd>
</dl>
</li>
</ul>
<a name="simplify-org.w3c.dom.Node-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>simplify</h4>
<pre>public static&nbsp;void&nbsp;simplify(org.w3c.dom.Node&nbsp;parent)</pre>
<div class="block">Removes all comments and processing instruction, and unites adjacent text nodes (here CDATA counts as text as
well). This is similar to applying <a href="../../../freemarker/ext/dom/NodeModel.html#removeComments-org.w3c.dom.Node-"><code>removeComments(Node)</code></a>, <a href="../../../freemarker/ext/dom/NodeModel.html#removePIs-org.w3c.dom.Node-"><code>removePIs(Node)</code></a>, and finally
<a href="../../../freemarker/ext/dom/NodeModel.html#mergeAdjacentText-org.w3c.dom.Node-"><code>mergeAdjacentText(Node)</code></a>, but it does all that somewhat faster.</div>
</li>
</ul>
<a name="useDefaultXPathSupport--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useDefaultXPathSupport</h4>
<pre>public static&nbsp;void&nbsp;useDefaultXPathSupport()</pre>
<div class="block">Tells the system to use (restore) the default (initial) XPath system used by
this FreeMarker version on this system.</div>
</li>
</ul>
<a name="useJaxenXPathSupport--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useJaxenXPathSupport</h4>
<pre>public static&nbsp;void&nbsp;useJaxenXPathSupport()
throws java.lang.Exception</pre>
<div class="block">Convenience method. Tells the system to use Jaxen for XPath queries.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if the Jaxen classes are not present.</dd>
</dl>
</li>
</ul>
<a name="useXalanXPathSupport--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useXalanXPathSupport</h4>
<pre>public static&nbsp;void&nbsp;useXalanXPathSupport()
throws java.lang.Exception</pre>
<div class="block">Convenience method. Tells the system to use Xalan for XPath queries.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if the Xalan XPath classes are not present.</dd>
</dl>
</li>
</ul>
<a name="useSunInternalXPathSupport--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>useSunInternalXPathSupport</h4>
<pre>public static&nbsp;void&nbsp;useSunInternalXPathSupport()
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a name="setXPathSupportClass-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setXPathSupportClass</h4>
<pre>public static&nbsp;void&nbsp;setXPathSupportClass(java.lang.Class&nbsp;cl)</pre>
<div class="block">Set an alternative implementation of freemarker.ext.dom.XPathSupport to use
as the XPath engine.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cl</code> - the class, or <code>null</code> to disable XPath support.</dd>
</dl>
</li>
</ul>
<a name="getXPathSupportClass--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getXPathSupportClass</h4>
<pre>public static&nbsp;java.lang.Class&nbsp;getXPathSupportClass()</pre>
<div class="block">Get the currently used freemarker.ext.dom.XPathSupport used as the XPath engine.
Returns <code>null</code> if XPath support is disabled.</div>
</li>
</ul>
<a name="getAdaptedObject-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAdaptedObject</h4>
<pre>public&nbsp;java.lang.Object&nbsp;getAdaptedObject(java.lang.Class&nbsp;hint)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../freemarker/template/AdapterTemplateModel.html#getAdaptedObject-java.lang.Class-">AdapterTemplateModel</a></code></span></div>
<div class="block">Retrieves the underlying object, or some other object semantically
equivalent to its value narrowed by the class hint.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/template/AdapterTemplateModel.html#getAdaptedObject-java.lang.Class-">getAdaptedObject</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/AdapterTemplateModel.html" title="interface in freemarker.template">AdapterTemplateModel</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>hint</code> - the desired class of the returned value. An implementation
should make reasonable effort to retrieve an object of the requested
class, but if that is impossible, it must at least return the underlying
object as-is. As a minimal requirement, an implementation must always
return the exact underlying object when
<tt>hint.isInstance(underlyingObject)</tt> holds. When called
with <tt>java.lang.Object.class</tt>, it should return a generic Java
object (i.e. if the model is wrapping a scripting language object that is
further wrapping a Java object, the deepest underlying Java object should
be returned).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the underlying object, or its value accommodated for the hint
class.</dd>
</dl>
</li>
</ul>
<a name="getWrappedObject--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWrappedObject</h4>
<pre>public&nbsp;java.lang.Object&nbsp;getWrappedObject()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../freemarker/ext/util/WrapperTemplateModel.html#getWrappedObject--">WrapperTemplateModel</a></code></span></div>
<div class="block">Retrieves the original object wrapped by this model.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../freemarker/ext/util/WrapperTemplateModel.html#getWrappedObject--">getWrappedObject</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/ext/util/WrapperTemplateModel.html" title="interface in freemarker.ext.util">WrapperTemplateModel</a></code></dd>
</dl>
</li>
</ul>
<a name="explainTypeError-java.lang.Class:A-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>explainTypeError</h4>
<pre>public&nbsp;java.lang.Object[]&nbsp;explainTypeError(java.lang.Class[]&nbsp;expectedClasses)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>explainTypeError</code>&nbsp;in interface&nbsp;<code>freemarker.core._UnexpectedTypeErrorExplainerTemplateModel</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/NodeModel.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../freemarker/ext/dom/Transform.html" title="class in freemarker.ext.dom"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?freemarker/ext/dom/NodeModel.html" target="_top">Frames</a></li>
<li><a href="NodeModel.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>