Code Search for Developers
 
 
  

SAXWriter.html from PeerWriter at Krugle


Show SAXWriter.html syntax highlighted

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /><title>SAXWriter xref</title>
<link type="text/css" rel="stylesheet" href="../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../apidocs/org/dom4j/io/SAXWriter.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.</em>
<a name="3" href="#3">3</a>   <em class="comment"> *</em>
<a name="4" href="#4">4</a>   <em class="comment"> * This software is open source.</em>
<a name="5" href="#5">5</a>   <em class="comment"> * See the bottom of this file for the licence.</em>
<a name="6" href="#6">6</a>   <em class="comment"> */</em>
<a name="7" href="#7">7</a>   
<a name="8" href="#8">8</a>   <strong>package</strong> <a href="../../../org/dom4j/io/package-summary.html">org.dom4j.io</a>;
<a name="9" href="#9">9</a>   
<a name="10" href="#10">10</a>  <strong>import</strong> java.io.IOException;
<a name="11" href="#11">11</a>  <strong>import</strong> java.util.HashMap;
<a name="12" href="#12">12</a>  <strong>import</strong> java.util.Iterator;
<a name="13" href="#13">13</a>  <strong>import</strong> java.util.List;
<a name="14" href="#14">14</a>  <strong>import</strong> java.util.Map;
<a name="15" href="#15">15</a>  
<a name="16" href="#16">16</a>  <strong>import</strong> org.dom4j.Attribute;
<a name="17" href="#17">17</a>  <strong>import</strong> org.dom4j.Branch;
<a name="18" href="#18">18</a>  <strong>import</strong> org.dom4j.CDATA;
<a name="19" href="#19">19</a>  <strong>import</strong> org.dom4j.CharacterData;
<a name="20" href="#20">20</a>  <strong>import</strong> org.dom4j.Comment;
<a name="21" href="#21">21</a>  <strong>import</strong> org.dom4j.Document;
<a name="22" href="#22">22</a>  <strong>import</strong> org.dom4j.DocumentType;
<a name="23" href="#23">23</a>  <strong>import</strong> org.dom4j.Element;
<a name="24" href="#24">24</a>  <strong>import</strong> org.dom4j.Entity;
<a name="25" href="#25">25</a>  <strong>import</strong> org.dom4j.Namespace;
<a name="26" href="#26">26</a>  <strong>import</strong> org.dom4j.Node;
<a name="27" href="#27">27</a>  <strong>import</strong> org.dom4j.ProcessingInstruction;
<a name="28" href="#28">28</a>  <strong>import</strong> org.dom4j.Text;
<a name="29" href="#29">29</a>  <strong>import</strong> org.dom4j.tree.NamespaceStack;
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <strong>import</strong> org.xml.sax.Attributes;
<a name="32" href="#32">32</a>  <strong>import</strong> org.xml.sax.ContentHandler;
<a name="33" href="#33">33</a>  <strong>import</strong> org.xml.sax.DTDHandler;
<a name="34" href="#34">34</a>  <strong>import</strong> org.xml.sax.EntityResolver;
<a name="35" href="#35">35</a>  <strong>import</strong> org.xml.sax.ErrorHandler;
<a name="36" href="#36">36</a>  <strong>import</strong> org.xml.sax.InputSource;
<a name="37" href="#37">37</a>  <strong>import</strong> org.xml.sax.SAXException;
<a name="38" href="#38">38</a>  <strong>import</strong> org.xml.sax.SAXNotRecognizedException;
<a name="39" href="#39">39</a>  <strong>import</strong> org.xml.sax.SAXNotSupportedException;
<a name="40" href="#40">40</a>  <strong>import</strong> org.xml.sax.XMLReader;
<a name="41" href="#41">41</a>  <strong>import</strong> org.xml.sax.ext.LexicalHandler;
<a name="42" href="#42">42</a>  <strong>import</strong> org.xml.sax.helpers.AttributesImpl;
<a name="43" href="#43">43</a>  <strong>import</strong> org.xml.sax.helpers.LocatorImpl;
<a name="44" href="#44">44</a>  
<a name="45" href="#45">45</a>  <em>/**<em>*</em></em>
<a name="46" href="#46">46</a>  <em> * &lt;p></em>
<a name="47" href="#47">47</a>  <em> * &lt;code>SAXWriter&lt;/code> writes a DOM4J tree to a SAX ContentHandler.</em>
<a name="48" href="#48">48</a>  <em> * &lt;/p></em>
<a name="49" href="#49">49</a>  <em> * </em>
<a name="50" href="#50">50</a>  <em> * @author &lt;a href="<a href="mailto:james.strachan@metastuff.com" target="alexandria_uri">mailto:james.strachan@metastuff.com</a>">James Strachan &lt;/a></em>
<a name="51" href="#51">51</a>  <em> * @version $Revision: 1.1 $</em>
<a name="52" href="#52">52</a>  <em> */</em>
<a name="53" href="#53">53</a>  <strong>public</strong> <strong>class</strong> <a href="../../../org/dom4j/io/SAXWriter.html">SAXWriter</a> implements XMLReader {
<a name="54" href="#54">54</a>      <strong>protected</strong> <strong>static</strong> <strong>final</strong> String[] LEXICAL_HANDLER_NAMES = {
<a name="55" href="#55">55</a>              <span class="string">"http://xml.org/sax/properties/lexical-handler"</span>,
<a name="56" href="#56">56</a>              <span class="string">"http://xml.org/sax/handlers/LexicalHandler"</span> };
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>      <strong>protected</strong> <strong>static</strong> <strong>final</strong> String FEATURE_NAMESPACE_PREFIXES 
<a name="59" href="#59">59</a>              = <span class="string">"http://xml.org/sax/features/namespace-prefixes"</span>;
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>      <strong>protected</strong> <strong>static</strong> <strong>final</strong> String FEATURE_NAMESPACES 
<a name="62" href="#62">62</a>              = <span class="string">"http://xml.org/sax/features/namespaces"</span>;
<a name="63" href="#63">63</a>  
<a name="64" href="#64">64</a>      <em>/**<em>* &lt;code>ContentHandler&lt;/code> to which SAX events are raised */</em></em>
<a name="65" href="#65">65</a>      <strong>private</strong> ContentHandler contentHandler;
<a name="66" href="#66">66</a>  
<a name="67" href="#67">67</a>      <em>/**<em>* &lt;code>DTDHandler&lt;/code> fired when a document has a DTD */</em></em>
<a name="68" href="#68">68</a>      <strong>private</strong> DTDHandler dtdHandler;
<a name="69" href="#69">69</a>  
<a name="70" href="#70">70</a>      <em>/**<em>* &lt;code>EntityResolver&lt;/code> fired when a document has a DTD */</em></em>
<a name="71" href="#71">71</a>      <strong>private</strong> EntityResolver entityResolver;
<a name="72" href="#72">72</a>  
<a name="73" href="#73">73</a>      <strong>private</strong> ErrorHandler errorHandler;
<a name="74" href="#74">74</a>  
<a name="75" href="#75">75</a>      <em>/**<em>* &lt;code>LexicalHandler&lt;/code> fired on <a href="../../../org/dom4j/Entity.html">Entity</a> and <a href="../../../org/dom4j/CDATA.html">CDATA</a> sections */</em></em>
<a name="76" href="#76">76</a>      <strong>private</strong> LexicalHandler lexicalHandler;
<a name="77" href="#77">77</a>  
<a name="78" href="#78">78</a>      <em>/**<em>* &lt;code>AttributesImpl&lt;/code> used when generating the Attributes */</em></em>
<a name="79" href="#79">79</a>      <strong>private</strong> AttributesImpl attributes = <strong>new</strong> AttributesImpl();
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>      <em>/**<em>* Stores the features */</em></em>
<a name="82" href="#82">82</a>      <strong>private</strong> Map features = <strong>new</strong> HashMap();
<a name="83" href="#83">83</a>  
<a name="84" href="#84">84</a>      <em>/**<em>* Stores the properties */</em></em>
<a name="85" href="#85">85</a>      <strong>private</strong> Map properties = <strong>new</strong> HashMap();
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>      <em>/**<em>* Whether namespace declarations are exported as attributes or not */</em></em>
<a name="88" href="#88">88</a>      <strong>private</strong> <strong>boolean</strong> declareNamespaceAttributes;
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>      <strong>public</strong> <a href="../../../org/dom4j/io/SAXWriter.html">SAXWriter</a>() {
<a name="91" href="#91">91</a>          properties.put(FEATURE_NAMESPACE_PREFIXES, Boolean.FALSE);
<a name="92" href="#92">92</a>          properties.put(FEATURE_NAMESPACE_PREFIXES, Boolean.TRUE);
<a name="93" href="#93">93</a>      }
<a name="94" href="#94">94</a>  
<a name="95" href="#95">95</a>      <strong>public</strong> <a href="../../../org/dom4j/io/SAXWriter.html">SAXWriter</a>(ContentHandler contentHandler) {
<a name="96" href="#96">96</a>          <strong>this</strong>();
<a name="97" href="#97">97</a>          <strong>this</strong>.contentHandler = contentHandler;
<a name="98" href="#98">98</a>      }
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>     <strong>public</strong> <a href="../../../org/dom4j/io/SAXWriter.html">SAXWriter</a>(ContentHandler contentHandler,
<a name="101" href="#101">101</a>             LexicalHandler lexicalHandler) {
<a name="102" href="#102">102</a>         <strong>this</strong>();
<a name="103" href="#103">103</a>         <strong>this</strong>.contentHandler = contentHandler;
<a name="104" href="#104">104</a>         <strong>this</strong>.lexicalHandler = lexicalHandler;
<a name="105" href="#105">105</a>     }
<a name="106" href="#106">106</a> 
<a name="107" href="#107">107</a>     <strong>public</strong> <a href="../../../org/dom4j/io/SAXWriter.html">SAXWriter</a>(ContentHandler contentHandler,
<a name="108" href="#108">108</a>             LexicalHandler lexicalHandler, EntityResolver entityResolver) {
<a name="109" href="#109">109</a>         <strong>this</strong>();
<a name="110" href="#110">110</a>         <strong>this</strong>.contentHandler = contentHandler;
<a name="111" href="#111">111</a>         <strong>this</strong>.lexicalHandler = lexicalHandler;
<a name="112" href="#112">112</a>         <strong>this</strong>.entityResolver = entityResolver;
<a name="113" href="#113">113</a>     }
<a name="114" href="#114">114</a> 
<a name="115" href="#115">115</a>     <em>/**<em>*</em></em>
<a name="116" href="#116">116</a> <em>     * A polymorphic method to write any Node to this SAX stream</em>
<a name="117" href="#117">117</a> <em>     * </em>
<a name="118" href="#118">118</a> <em>     * @param node</em>
<a name="119" href="#119">119</a> <em>     *            DOCUMENT ME!</em>
<a name="120" href="#120">120</a> <em>     * </em>
<a name="121" href="#121">121</a> <em>     * @throws SAXException</em>
<a name="122" href="#122">122</a> <em>     *             DOCUMENT ME!</em>
<a name="123" href="#123">123</a> <em>     */</em>
<a name="124" href="#124">124</a>     <strong>public</strong> <strong>void</strong> write(<a href="../../../org/dom4j/Node.html">Node</a> node) throws SAXException {
<a name="125" href="#125">125</a>         <strong>int</strong> nodeType = node.getNodeType();
<a name="126" href="#126">126</a> 
<a name="127" href="#127">127</a>         <strong>switch</strong> (nodeType) {
<a name="128" href="#128">128</a>             <strong>case</strong> Node.ELEMENT_NODE:
<a name="129" href="#129">129</a>                 write((Element) node);
<a name="130" href="#130">130</a> 
<a name="131" href="#131">131</a>                 <strong>break</strong>;
<a name="132" href="#132">132</a> 
<a name="133" href="#133">133</a>             <strong>case</strong> Node.ATTRIBUTE_NODE:
<a name="134" href="#134">134</a>                 write((Attribute) node);
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a>                 <strong>break</strong>;
<a name="137" href="#137">137</a> 
<a name="138" href="#138">138</a>             <strong>case</strong> Node.TEXT_NODE:
<a name="139" href="#139">139</a>                 write(node.getText());
<a name="140" href="#140">140</a> 
<a name="141" href="#141">141</a>                 <strong>break</strong>;
<a name="142" href="#142">142</a> 
<a name="143" href="#143">143</a>             <strong>case</strong> Node.CDATA_SECTION_NODE:
<a name="144" href="#144">144</a>                 write((CDATA) node);
<a name="145" href="#145">145</a> 
<a name="146" href="#146">146</a>                 <strong>break</strong>;
<a name="147" href="#147">147</a> 
<a name="148" href="#148">148</a>             <strong>case</strong> Node.ENTITY_REFERENCE_NODE:
<a name="149" href="#149">149</a>                 write((Entity) node);
<a name="150" href="#150">150</a> 
<a name="151" href="#151">151</a>                 <strong>break</strong>;
<a name="152" href="#152">152</a> 
<a name="153" href="#153">153</a>             <strong>case</strong> Node.PROCESSING_INSTRUCTION_NODE:
<a name="154" href="#154">154</a>                 write((ProcessingInstruction) node);
<a name="155" href="#155">155</a> 
<a name="156" href="#156">156</a>                 <strong>break</strong>;
<a name="157" href="#157">157</a> 
<a name="158" href="#158">158</a>             <strong>case</strong> Node.COMMENT_NODE:
<a name="159" href="#159">159</a>                 write((Comment) node);
<a name="160" href="#160">160</a> 
<a name="161" href="#161">161</a>                 <strong>break</strong>;
<a name="162" href="#162">162</a> 
<a name="163" href="#163">163</a>             <strong>case</strong> Node.DOCUMENT_NODE:
<a name="164" href="#164">164</a>                 write((Document) node);
<a name="165" href="#165">165</a> 
<a name="166" href="#166">166</a>                 <strong>break</strong>;
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>             <strong>case</strong> Node.DOCUMENT_TYPE_NODE:
<a name="169" href="#169">169</a>                 write((DocumentType) node);
<a name="170" href="#170">170</a> 
<a name="171" href="#171">171</a>                 <strong>break</strong>;
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>             <strong>case</strong> Node.NAMESPACE_NODE:
<a name="174" href="#174">174</a> 
<a name="175" href="#175">175</a>                 <em class="comment">// Will be output with attributes</em>
<a name="176" href="#176">176</a>                 <em class="comment">// write((Namespace) node);</em>
<a name="177" href="#177">177</a>                 <strong>break</strong>;
<a name="178" href="#178">178</a> 
<a name="179" href="#179">179</a>             <strong>default</strong>:
<a name="180" href="#180">180</a>                 <strong>throw</strong> <strong>new</strong> SAXException(<span class="string">"Invalid node type: "</span> + node);
<a name="181" href="#181">181</a>         }
<a name="182" href="#182">182</a>     }
<a name="183" href="#183">183</a> 
<a name="184" href="#184">184</a>     <em>/**<em>*</em></em>
<a name="185" href="#185">185</a> <em>     * Generates SAX events for the given Document and all its content</em>
<a name="186" href="#186">186</a> <em>     * </em>
<a name="187" href="#187">187</a> <em>     * @param document</em>
<a name="188" href="#188">188</a> <em>     *            is the Document to parse</em>
<a name="189" href="#189">189</a> <em>     * </em>
<a name="190" href="#190">190</a> <em>     * @throws SAXException</em>
<a name="191" href="#191">191</a> <em>     *             if there is a SAX error processing the events</em>
<a name="192" href="#192">192</a> <em>     */</em>
<a name="193" href="#193">193</a>     <strong>public</strong> <strong>void</strong> write(<a href="../../../org/dom4j/Document.html">Document</a> document) throws SAXException {
<a name="194" href="#194">194</a>         <strong>if</strong> (document != <strong>null</strong>) {
<a name="195" href="#195">195</a>             checkForNullHandlers();
<a name="196" href="#196">196</a> 
<a name="197" href="#197">197</a>             documentLocator(document);
<a name="198" href="#198">198</a>             startDocument();
<a name="199" href="#199">199</a>             entityResolver(document);
<a name="200" href="#200">200</a>             dtdHandler(document);
<a name="201" href="#201">201</a> 
<a name="202" href="#202">202</a>             writeContent(document, <strong>new</strong> <a href="../../../org/dom4j/tree/NamespaceStack.html">NamespaceStack</a>());
<a name="203" href="#203">203</a>             endDocument();
<a name="204" href="#204">204</a>         }
<a name="205" href="#205">205</a>     }
<a name="206" href="#206">206</a> 
<a name="207" href="#207">207</a>     <em>/**<em>*</em></em>
<a name="208" href="#208">208</a> <em>     * Generates SAX events for the given Element and all its content</em>
<a name="209" href="#209">209</a> <em>     * </em>
<a name="210" href="#210">210</a> <em>     * @param element</em>
<a name="211" href="#211">211</a> <em>     *            is the Element to parse</em>
<a name="212" href="#212">212</a> <em>     * </em>
<a name="213" href="#213">213</a> <em>     * @throws SAXException</em>
<a name="214" href="#214">214</a> <em>     *             if there is a SAX error processing the events</em>
<a name="215" href="#215">215</a> <em>     */</em>
<a name="216" href="#216">216</a>     <strong>public</strong> <strong>void</strong> write(<a href="../../../org/dom4j/Element.html">Element</a> element) throws SAXException {
<a name="217" href="#217">217</a>         write(element, <strong>new</strong> <a href="../../../org/dom4j/tree/NamespaceStack.html">NamespaceStack</a>());
<a name="218" href="#218">218</a>     }
<a name="219" href="#219">219</a> 
<a name="220" href="#220">220</a>     <em>/**<em>*</em></em>
<a name="221" href="#221">221</a> <em>     * &lt;p></em>
<a name="222" href="#222">222</a> <em>     * Writes the opening tag of an {@link Element}, including its {@link</em>
<a name="223" href="#223">223</a> <em>     * Attribute}s but without its content.</em>
<a name="224" href="#224">224</a> <em>     * &lt;/p></em>
<a name="225" href="#225">225</a> <em>     * </em>
<a name="226" href="#226">226</a> <em>     * @param element</em>
<a name="227" href="#227">227</a> <em>     *            &lt;code>Element&lt;/code> to output.</em>
<a name="228" href="#228">228</a> <em>     * </em>
<a name="229" href="#229">229</a> <em>     * @throws SAXException</em>
<a name="230" href="#230">230</a> <em>     *             DOCUMENT ME!</em>
<a name="231" href="#231">231</a> <em>     */</em>
<a name="232" href="#232">232</a>     <strong>public</strong> <strong>void</strong> writeOpen(<a href="../../../org/dom4j/Element.html">Element</a> element) throws SAXException {
<a name="233" href="#233">233</a>         startElement(element, <strong>null</strong>);
<a name="234" href="#234">234</a>     }
<a name="235" href="#235">235</a> 
<a name="236" href="#236">236</a>     <em>/**<em>*</em></em>
<a name="237" href="#237">237</a> <em>     * &lt;p></em>
<a name="238" href="#238">238</a> <em>     * Writes the closing tag of an {@link Element}</em>
<a name="239" href="#239">239</a> <em>     * &lt;/p></em>
<a name="240" href="#240">240</a> <em>     * </em>
<a name="241" href="#241">241</a> <em>     * @param element</em>
<a name="242" href="#242">242</a> <em>     *            &lt;code>Element&lt;/code> to output.</em>
<a name="243" href="#243">243</a> <em>     * </em>
<a name="244" href="#244">244</a> <em>     * @throws SAXException</em>
<a name="245" href="#245">245</a> <em>     *             DOCUMENT ME!</em>
<a name="246" href="#246">246</a> <em>     */</em>
<a name="247" href="#247">247</a>     <strong>public</strong> <strong>void</strong> writeClose(<a href="../../../org/dom4j/Element.html">Element</a> element) throws SAXException {
<a name="248" href="#248">248</a>         endElement(element);
<a name="249" href="#249">249</a>     }
<a name="250" href="#250">250</a> 
<a name="251" href="#251">251</a>     <em>/**<em>*</em></em>
<a name="252" href="#252">252</a> <em>     * Generates SAX events for the given text</em>
<a name="253" href="#253">253</a> <em>     * </em>
<a name="254" href="#254">254</a> <em>     * @param text</em>
<a name="255" href="#255">255</a> <em>     *            is the text to send to the SAX ContentHandler</em>
<a name="256" href="#256">256</a> <em>     * </em>
<a name="257" href="#257">257</a> <em>     * @throws SAXException</em>
<a name="258" href="#258">258</a> <em>     *             if there is a SAX error processing the events</em>
<a name="259" href="#259">259</a> <em>     */</em>
<a name="260" href="#260">260</a>     <strong>public</strong> <strong>void</strong> write(String text) throws SAXException {
<a name="261" href="#261">261</a>         <strong>if</strong> (text != <strong>null</strong>) {
<a name="262" href="#262">262</a>             <strong>char</strong>[] <strong>char</strong>s = text.toCharArray();
<a name="263" href="#263">263</a>             contentHandler.characters(chars, 0, chars.length);
<a name="264" href="#264">264</a>         }
<a name="265" href="#265">265</a>     }
<a name="266" href="#266">266</a> 
<a name="267" href="#267">267</a>     <em>/**<em>*</em></em>
<a name="268" href="#268">268</a> <em>     * Generates SAX events for the given CDATA</em>
<a name="269" href="#269">269</a> <em>     * </em>
<a name="270" href="#270">270</a> <em>     * @param cdata</em>
<a name="271" href="#271">271</a> <em>     *            is the CDATA to parse</em>
<a name="272" href="#272">272</a> <em>     * </em>
<a name="273" href="#273">273</a> <em>     * @throws SAXException</em>
<a name="274" href="#274">274</a> <em>     *             if there is a SAX error processing the events</em>
<a name="275" href="#275">275</a> <em>     */</em>
<a name="276" href="#276">276</a>     <strong>public</strong> <strong>void</strong> write(<a href="../../../org/dom4j/CDATA.html">CDATA</a> cdata) throws SAXException {
<a name="277" href="#277">277</a>         String text = cdata.getText();
<a name="278" href="#278">278</a> 
<a name="279" href="#279">279</a>         <strong>if</strong> (lexicalHandler != <strong>null</strong>) {
<a name="280" href="#280">280</a>             lexicalHandler.startCDATA();
<a name="281" href="#281">281</a>             write(text);
<a name="282" href="#282">282</a>             lexicalHandler.endCDATA();
<a name="283" href="#283">283</a>         } <strong>else</strong> {
<a name="284" href="#284">284</a>             write(text);
<a name="285" href="#285">285</a>         }
<a name="286" href="#286">286</a>     }
<a name="287" href="#287">287</a> 
<a name="288" href="#288">288</a>     <em>/**<em>*</em></em>
<a name="289" href="#289">289</a> <em>     * Generates SAX events for the given Comment</em>
<a name="290" href="#290">290</a> <em>     * </em>
<a name="291" href="#291">291</a> <em>     * @param comment</em>
<a name="292" href="#292">292</a> <em>     *            is the Comment to parse</em>
<a name="293" href="#293">293</a> <em>     * </em>
<a name="294" href="#294">294</a> <em>     * @throws SAXException</em>
<a name="295" href="#295">295</a> <em>     *             if there is a SAX error processing the events</em>
<a name="296" href="#296">296</a> <em>     */</em>
<a name="297" href="#297">297</a>     <strong>public</strong> <strong>void</strong> write(<a href="../../../org/dom4j/Comment.html">Comment</a> comment) throws SAXException {
<a name="298" href="#298">298</a>         <strong>if</strong> (lexicalHandler != <strong>null</strong>) {
<a name="299" href="#299">299</a>             String text = comment.getText();
<a name="300" href="#300">300</a>             <strong>char</strong>[] <strong>char</strong>s = text.toCharArray();
<a name="301" href="#301">301</a>             lexicalHandler.comment(chars, 0, chars.length);
<a name="302" href="#302">302</a>         }
<a name="303" href="#303">303</a>     }
<a name="304" href="#304">304</a> 
<a name="305" href="#305">305</a>     <em>/**<em>*</em></em>
<a name="306" href="#306">306</a> <em>     * Generates SAX events for the given Entity</em>
<a name="307" href="#307">307</a> <em>     * </em>
<a name="308" href="#308">308</a> <em>     * @param entity</em>
<a name="309" href="#309">309</a> <em>     *            is the Entity to parse</em>
<a name="310" href="#310">310</a> <em>     * </em>
<a name="311" href="#311">311</a> <em>     * @throws SAXException</em>
<a name="312" href="#312">312</a> <em>     *             if there is a SAX error processing the events</em>
<a name="313" href="#313">313</a> <em>     */</em>
<a name="314" href="#314">314</a>     <strong>public</strong> <strong>void</strong> write(<a href="../../../org/dom4j/Entity.html">Entity</a> entity) throws SAXException {
<a name="315" href="#315">315</a>         String text = entity.getText();
<a name="316" href="#316">316</a> 
<a name="317" href="#317">317</a>         <strong>if</strong> (lexicalHandler != <strong>null</strong>) {
<a name="318" href="#318">318</a>             String name = entity.getName();
<a name="319" href="#319">319</a>             lexicalHandler.startEntity(name);
<a name="320" href="#320">320</a>             write(text);
<a name="321" href="#321">321</a>             lexicalHandler.endEntity(name);
<a name="322" href="#322">322</a>         } <strong>else</strong> {
<a name="323" href="#323">323</a>             write(text);
<a name="324" href="#324">324</a>         }
<a name="325" href="#325">325</a>     }
<a name="326" href="#326">326</a> 
<a name="327" href="#327">327</a>     <em>/**<em>*</em></em>
<a name="328" href="#328">328</a> <em>     * Generates SAX events for the given ProcessingInstruction</em>
<a name="329" href="#329">329</a> <em>     * </em>
<a name="330" href="#330">330</a> <em>     * @param pi</em>
<a name="331" href="#331">331</a> <em>     *            is the ProcessingInstruction to parse</em>
<a name="332" href="#332">332</a> <em>     * </em>
<a name="333" href="#333">333</a> <em>     * @throws SAXException</em>
<a name="334" href="#334">334</a> <em>     *             if there is a SAX error processing the events</em>
<a name="335" href="#335">335</a> <em>     */</em>
<a name="336" href="#336">336</a>     <strong>public</strong> <strong>void</strong> write(<a href="../../../org/dom4j/ProcessingInstruction.html">ProcessingInstruction</a> pi) throws SAXException {
<a name="337" href="#337">337</a>         String target = pi.getTarget();
<a name="338" href="#338">338</a>         String text = pi.getText();
<a name="339" href="#339">339</a>         contentHandler.processingInstruction(target, text);
<a name="340" href="#340">340</a>     }
<a name="341" href="#341">341</a> 
<a name="342" href="#342">342</a>     <em>/**<em>*</em></em>
<a name="343" href="#343">343</a> <em>     * Should namespace declarations be converted to "xmlns" attributes. This</em>
<a name="344" href="#344">344</a> <em>     * property defaults to &lt;code>false&lt;/code> as per the SAX specification.</em>
<a name="345" href="#345">345</a> <em>     * This property is set via the SAX feature</em>
<a name="346" href="#346">346</a> <em>     * "<a href="http://xml.org/sax/features/namespace-prefixes" target="alexandria_uri">http://xml.org/sax/features/namespace-prefixes</a>"</em>
<a name="347" href="#347">347</a> <em>     * </em>
<a name="348" href="#348">348</a> <em>     * @return DOCUMENT ME!</em>
<a name="349" href="#349">349</a> <em>     */</em>
<a name="350" href="#350">350</a>     <strong>public</strong> <strong>boolean</strong> isDeclareNamespaceAttributes() {
<a name="351" href="#351">351</a>         <strong>return</strong> declareNamespaceAttributes;
<a name="352" href="#352">352</a>     }
<a name="353" href="#353">353</a> 
<a name="354" href="#354">354</a>     <em>/**<em>*</em></em>
<a name="355" href="#355">355</a> <em>     * Sets whether namespace declarations should be exported as "xmlns"</em>
<a name="356" href="#356">356</a> <em>     * attributes or not. This property is set from the SAX feature</em>
<a name="357" href="#357">357</a> <em>     * "<a href="http://xml.org/sax/features/namespace-prefixes" target="alexandria_uri">http://xml.org/sax/features/namespace-prefixes</a>"</em>
<a name="358" href="#358">358</a> <em>     * </em>
<a name="359" href="#359">359</a> <em>     * @param declareNamespaceAttrs</em>
<a name="360" href="#360">360</a> <em>     *            DOCUMENT ME!</em>
<a name="361" href="#361">361</a> <em>     */</em>
<a name="362" href="#362">362</a>     <strong>public</strong> <strong>void</strong> setDeclareNamespaceAttributes(<strong>boolean</strong> declareNamespaceAttrs) {
<a name="363" href="#363">363</a>         <strong>this</strong>.declareNamespaceAttributes = declareNamespaceAttrs;
<a name="364" href="#364">364</a>     }
<a name="365" href="#365">365</a> 
<a name="366" href="#366">366</a>     <em class="comment">// XMLReader methods</em>
<a name="367" href="#367">367</a>     <em class="comment">// -------------------------------------------------------------------------</em>
<a name="368" href="#368">368</a> 
<a name="369" href="#369">369</a>     <em>/**<em>*</em></em>
<a name="370" href="#370">370</a> <em>     * DOCUMENT ME!</em>
<a name="371" href="#371">371</a> <em>     * </em>
<a name="372" href="#372">372</a> <em>     * @return the &lt;code>ContentHandler&lt;/code> called when SAX events are</em>
<a name="373" href="#373">373</a> <em>     *         raised</em>
<a name="374" href="#374">374</a> <em>     */</em>
<a name="375" href="#375">375</a>     <strong>public</strong> ContentHandler getContentHandler() {
<a name="376" href="#376">376</a>         <strong>return</strong> contentHandler;
<a name="377" href="#377">377</a>     }
<a name="378" href="#378">378</a> 
<a name="379" href="#379">379</a>     <em>/**<em>*</em></em>
<a name="380" href="#380">380</a> <em>     * Sets the &lt;code>ContentHandler&lt;/code> called when SAX events are raised</em>
<a name="381" href="#381">381</a> <em>     * </em>
<a name="382" href="#382">382</a> <em>     * @param contentHandler</em>
<a name="383" href="#383">383</a> <em>     *            is the &lt;code>ContentHandler&lt;/code> called when SAX events</em>
<a name="384" href="#384">384</a> <em>     *            are raised</em>
<a name="385" href="#385">385</a> <em>     */</em>
<a name="386" href="#386">386</a>     <strong>public</strong> <strong>void</strong> setContentHandler(ContentHandler contentHandler) {
<a name="387" href="#387">387</a>         <strong>this</strong>.contentHandler = contentHandler;
<a name="388" href="#388">388</a>     }
<a name="389" href="#389">389</a> 
<a name="390" href="#390">390</a>     <em>/**<em>*</em></em>
<a name="391" href="#391">391</a> <em>     * DOCUMENT ME!</em>
<a name="392" href="#392">392</a> <em>     * </em>
<a name="393" href="#393">393</a> <em>     * @return the &lt;code>DTDHandler&lt;/code></em>
<a name="394" href="#394">394</a> <em>     */</em>
<a name="395" href="#395">395</a>     <strong>public</strong> DTDHandler getDTDHandler() {
<a name="396" href="#396">396</a>         <strong>return</strong> dtdHandler;
<a name="397" href="#397">397</a>     }
<a name="398" href="#398">398</a> 
<a name="399" href="#399">399</a>     <em>/**<em>*</em></em>
<a name="400" href="#400">400</a> <em>     * Sets the &lt;code>DTDHandler&lt;/code>.</em>
<a name="401" href="#401">401</a> <em>     * </em>
<a name="402" href="#402">402</a> <em>     * @param handler</em>
<a name="403" href="#403">403</a> <em>     *            DOCUMENT ME!</em>
<a name="404" href="#404">404</a> <em>     */</em>
<a name="405" href="#405">405</a>     <strong>public</strong> <strong>void</strong> setDTDHandler(DTDHandler handler) {
<a name="406" href="#406">406</a>         <strong>this</strong>.dtdHandler = handler;
<a name="407" href="#407">407</a>     }
<a name="408" href="#408">408</a> 
<a name="409" href="#409">409</a>     <em>/**<em>*</em></em>
<a name="410" href="#410">410</a> <em>     * DOCUMENT ME!</em>
<a name="411" href="#411">411</a> <em>     * </em>
<a name="412" href="#412">412</a> <em>     * @return the &lt;code>ErrorHandler&lt;/code></em>
<a name="413" href="#413">413</a> <em>     */</em>
<a name="414" href="#414">414</a>     <strong>public</strong> ErrorHandler getErrorHandler() {
<a name="415" href="#415">415</a>         <strong>return</strong> errorHandler;
<a name="416" href="#416">416</a>     }
<a name="417" href="#417">417</a> 
<a name="418" href="#418">418</a>     <em>/**<em>*</em></em>
<a name="419" href="#419">419</a> <em>     * Sets the &lt;code>ErrorHandler&lt;/code>.</em>
<a name="420" href="#420">420</a> <em>     * </em>
<a name="421" href="#421">421</a> <em>     * @param errorHandler</em>
<a name="422" href="#422">422</a> <em>     *            DOCUMENT ME!</em>
<a name="423" href="#423">423</a> <em>     */</em>
<a name="424" href="#424">424</a>     <strong>public</strong> <strong>void</strong> setErrorHandler(ErrorHandler errorHandler) {
<a name="425" href="#425">425</a>         <strong>this</strong>.errorHandler = errorHandler;
<a name="426" href="#426">426</a>     }
<a name="427" href="#427">427</a> 
<a name="428" href="#428">428</a>     <em>/**<em>*</em></em>
<a name="429" href="#429">429</a> <em>     * DOCUMENT ME!</em>
<a name="430" href="#430">430</a> <em>     * </em>
<a name="431" href="#431">431</a> <em>     * @return the &lt;code>EntityResolver&lt;/code> used when a Document contains a</em>
<a name="432" href="#432">432</a> <em>     *         DTD</em>
<a name="433" href="#433">433</a> <em>     */</em>
<a name="434" href="#434">434</a>     <strong>public</strong> EntityResolver getEntityResolver() {
<a name="435" href="#435">435</a>         <strong>return</strong> entityResolver;
<a name="436" href="#436">436</a>     }
<a name="437" href="#437">437</a> 
<a name="438" href="#438">438</a>     <em>/**<em>*</em></em>
<a name="439" href="#439">439</a> <em>     * Sets the &lt;code>EntityResolver&lt;/code>.</em>
<a name="440" href="#440">440</a> <em>     * </em>
<a name="441" href="#441">441</a> <em>     * @param entityResolver</em>
<a name="442" href="#442">442</a> <em>     *            is the &lt;code>EntityResolver&lt;/code></em>
<a name="443" href="#443">443</a> <em>     */</em>
<a name="444" href="#444">444</a>     <strong>public</strong> <strong>void</strong> setEntityResolver(EntityResolver entityResolver) {
<a name="445" href="#445">445</a>         <strong>this</strong>.entityResolver = entityResolver;
<a name="446" href="#446">446</a>     }
<a name="447" href="#447">447</a> 
<a name="448" href="#448">448</a>     <em>/**<em>*</em></em>
<a name="449" href="#449">449</a> <em>     * DOCUMENT ME!</em>
<a name="450" href="#450">450</a> <em>     * </em>
<a name="451" href="#451">451</a> <em>     * @return the &lt;code>LexicalHandler&lt;/code> used when a Document contains a</em>
<a name="452" href="#452">452</a> <em>     *         DTD</em>
<a name="453" href="#453">453</a> <em>     */</em>
<a name="454" href="#454">454</a>     <strong>public</strong> LexicalHandler getLexicalHandler() {
<a name="455" href="#455">455</a>         <strong>return</strong> lexicalHandler;
<a name="456" href="#456">456</a>     }
<a name="457" href="#457">457</a> 
<a name="458" href="#458">458</a>     <em>/**<em>*</em></em>
<a name="459" href="#459">459</a> <em>     * Sets the &lt;code>LexicalHandler&lt;/code>.</em>
<a name="460" href="#460">460</a> <em>     * </em>
<a name="461" href="#461">461</a> <em>     * @param lexicalHandler</em>
<a name="462" href="#462">462</a> <em>     *            is the &lt;code>LexicalHandler&lt;/code></em>
<a name="463" href="#463">463</a> <em>     */</em>
<a name="464" href="#464">464</a>     <strong>public</strong> <strong>void</strong> setLexicalHandler(LexicalHandler lexicalHandler) {
<a name="465" href="#465">465</a>         <strong>this</strong>.lexicalHandler = lexicalHandler;
<a name="466" href="#466">466</a>     }
<a name="467" href="#467">467</a> 
<a name="468" href="#468">468</a>     <em>/**<em>*</em></em>
<a name="469" href="#469">469</a> <em>     * Sets the &lt;code>XMLReader&lt;/code> used to write SAX events to</em>
<a name="470" href="#470">470</a> <em>     * </em>
<a name="471" href="#471">471</a> <em>     * @param xmlReader</em>
<a name="472" href="#472">472</a> <em>     *            is the &lt;code>XMLReader&lt;/code></em>
<a name="473" href="#473">473</a> <em>     */</em>
<a name="474" href="#474">474</a>     <strong>public</strong> <strong>void</strong> setXMLReader(XMLReader xmlReader) {
<a name="475" href="#475">475</a>         setContentHandler(xmlReader.getContentHandler());
<a name="476" href="#476">476</a>         setDTDHandler(xmlReader.getDTDHandler());
<a name="477" href="#477">477</a>         setEntityResolver(xmlReader.getEntityResolver());
<a name="478" href="#478">478</a>         setErrorHandler(xmlReader.getErrorHandler());
<a name="479" href="#479">479</a>     }
<a name="480" href="#480">480</a> 
<a name="481" href="#481">481</a>     <em>/**<em>*</em></em>
<a name="482" href="#482">482</a> <em>     * Looks up the value of a feature.</em>
<a name="483" href="#483">483</a> <em>     * </em>
<a name="484" href="#484">484</a> <em>     * @param name</em>
<a name="485" href="#485">485</a> <em>     *            DOCUMENT ME!</em>
<a name="486" href="#486">486</a> <em>     * </em>
<a name="487" href="#487">487</a> <em>     * @return DOCUMENT ME!</em>
<a name="488" href="#488">488</a> <em>     * </em>
<a name="489" href="#489">489</a> <em>     * @throws SAXNotRecognizedException</em>
<a name="490" href="#490">490</a> <em>     *             DOCUMENT ME!</em>
<a name="491" href="#491">491</a> <em>     * @throws SAXNotSupportedException</em>
<a name="492" href="#492">492</a> <em>     *             DOCUMENT ME!</em>
<a name="493" href="#493">493</a> <em>     */</em>
<a name="494" href="#494">494</a>     <strong>public</strong> <strong>boolean</strong> getFeature(String name) throws SAXNotRecognizedException,
<a name="495" href="#495">495</a>             SAXNotSupportedException {
<a name="496" href="#496">496</a>         Boolean answer = (Boolean) features.get(name);
<a name="497" href="#497">497</a> 
<a name="498" href="#498">498</a>         <strong>return</strong> (answer != <strong>null</strong>) &amp;&amp; answer.booleanValue();
<a name="499" href="#499">499</a>     }
<a name="500" href="#500">500</a> 
<a name="501" href="#501">501</a>     <em>/**<em>*</em></em>
<a name="502" href="#502">502</a> <em>     * This implementation does actually use any features but just stores them</em>
<a name="503" href="#503">503</a> <em>     * for later retrieval</em>
<a name="504" href="#504">504</a> <em>     * </em>
<a name="505" href="#505">505</a> <em>     * @param name</em>
<a name="506" href="#506">506</a> <em>     *            DOCUMENT ME!</em>
<a name="507" href="#507">507</a> <em>     * @param value</em>
<a name="508" href="#508">508</a> <em>     *            DOCUMENT ME!</em>
<a name="509" href="#509">509</a> <em>     * </em>
<a name="510" href="#510">510</a> <em>     * @throws SAXNotRecognizedException</em>
<a name="511" href="#511">511</a> <em>     *             DOCUMENT ME!</em>
<a name="512" href="#512">512</a> <em>     * @throws SAXNotSupportedException</em>
<a name="513" href="#513">513</a> <em>     *             DOCUMENT ME!</em>
<a name="514" href="#514">514</a> <em>     */</em>
<a name="515" href="#515">515</a>     <strong>public</strong> <strong>void</strong> setFeature(String name, <strong>boolean</strong> value)
<a name="516" href="#516">516</a>             throws SAXNotRecognizedException, SAXNotSupportedException {
<a name="517" href="#517">517</a>         <strong>if</strong> (FEATURE_NAMESPACE_PREFIXES.equals(name)) {
<a name="518" href="#518">518</a>             setDeclareNamespaceAttributes(value);
<a name="519" href="#519">519</a>         } <strong>else</strong> <strong>if</strong> (FEATURE_NAMESPACE_PREFIXES.equals(name)) {
<a name="520" href="#520">520</a>             <strong>if</strong> (!value) {
<a name="521" href="#521">521</a>                 String msg = <span class="string">"Namespace feature is always supported in dom4j"</span>;
<a name="522" href="#522">522</a>                 <strong>throw</strong> <strong>new</strong> SAXNotSupportedException(msg);
<a name="523" href="#523">523</a>             }
<a name="524" href="#524">524</a>         }
<a name="525" href="#525">525</a> 
<a name="526" href="#526">526</a>         features.put(name, (value) ? Boolean.TRUE : Boolean.FALSE);
<a name="527" href="#527">527</a>     }
<a name="528" href="#528">528</a> 
<a name="529" href="#529">529</a>     <em>/**<em>*</em></em>
<a name="530" href="#530">530</a> <em>     * Sets the given SAX property</em>
<a name="531" href="#531">531</a> <em>     * </em>
<a name="532" href="#532">532</a> <em>     * @param name</em>
<a name="533" href="#533">533</a> <em>     *            DOCUMENT ME!</em>
<a name="534" href="#534">534</a> <em>     * @param value</em>
<a name="535" href="#535">535</a> <em>     *            DOCUMENT ME!</em>
<a name="536" href="#536">536</a> <em>     */</em>
<a name="537" href="#537">537</a>     <strong>public</strong> <strong>void</strong> setProperty(String name, Object value) {
<a name="538" href="#538">538</a>         <strong>for</strong> (<strong>int</strong> i = 0; i &lt; LEXICAL_HANDLER_NAMES.length; i++) {
<a name="539" href="#539">539</a>             <strong>if</strong> (LEXICAL_HANDLER_NAMES[i].equals(name)) {
<a name="540" href="#540">540</a>                 setLexicalHandler((LexicalHandler) value);
<a name="541" href="#541">541</a> 
<a name="542" href="#542">542</a>                 <strong>return</strong>;
<a name="543" href="#543">543</a>             }
<a name="544" href="#544">544</a>         }
<a name="545" href="#545">545</a> 
<a name="546" href="#546">546</a>         properties.put(name, value);
<a name="547" href="#547">547</a>     }
<a name="548" href="#548">548</a> 
<a name="549" href="#549">549</a>     <em>/**<em>*</em></em>
<a name="550" href="#550">550</a> <em>     * Gets the given SAX property</em>
<a name="551" href="#551">551</a> <em>     * </em>
<a name="552" href="#552">552</a> <em>     * @param name</em>
<a name="553" href="#553">553</a> <em>     *            DOCUMENT ME!</em>
<a name="554" href="#554">554</a> <em>     * </em>
<a name="555" href="#555">555</a> <em>     * @return DOCUMENT ME!</em>
<a name="556" href="#556">556</a> <em>     * </em>
<a name="557" href="#557">557</a> <em>     * @throws SAXNotRecognizedException</em>
<a name="558" href="#558">558</a> <em>     *             DOCUMENT ME!</em>
<a name="559" href="#559">559</a> <em>     * @throws SAXNotSupportedException</em>
<a name="560" href="#560">560</a> <em>     *             DOCUMENT ME!</em>
<a name="561" href="#561">561</a> <em>     */</em>
<a name="562" href="#562">562</a>     <strong>public</strong> Object getProperty(String name) throws SAXNotRecognizedException,
<a name="563" href="#563">563</a>             SAXNotSupportedException {
<a name="564" href="#564">564</a>         <strong>for</strong> (<strong>int</strong> i = 0; i &lt; LEXICAL_HANDLER_NAMES.length; i++) {
<a name="565" href="#565">565</a>             <strong>if</strong> (LEXICAL_HANDLER_NAMES[i].equals(name)) {
<a name="566" href="#566">566</a>                 <strong>return</strong> getLexicalHandler();
<a name="567" href="#567">567</a>             }
<a name="568" href="#568">568</a>         }
<a name="569" href="#569">569</a> 
<a name="570" href="#570">570</a>         <strong>return</strong> properties.get(name);
<a name="571" href="#571">571</a>     }
<a name="572" href="#572">572</a> 
<a name="573" href="#573">573</a>     <em>/**<em>*</em></em>
<a name="574" href="#574">574</a> <em>     * This method is not supported.</em>
<a name="575" href="#575">575</a> <em>     * </em>
<a name="576" href="#576">576</a> <em>     * @param systemId</em>
<a name="577" href="#577">577</a> <em>     *            DOCUMENT ME!</em>
<a name="578" href="#578">578</a> <em>     * </em>
<a name="579" href="#579">579</a> <em>     * @throws SAXNotSupportedException</em>
<a name="580" href="#580">580</a> <em>     *             DOCUMENT ME!</em>
<a name="581" href="#581">581</a> <em>     */</em>
<a name="582" href="#582">582</a>     <strong>public</strong> <strong>void</strong> parse(String systemId) throws SAXNotSupportedException {
<a name="583" href="#583">583</a>         <strong>throw</strong> <strong>new</strong> SAXNotSupportedException(<span class="string">"This XMLReader can only accept"</span>
<a name="584" href="#584">584</a>                 + <span class="string">" &lt;dom4j> InputSource objects"</span>);
<a name="585" href="#585">585</a>     }
<a name="586" href="#586">586</a> 
<a name="587" href="#587">587</a>     <em>/**<em>*</em></em>
<a name="588" href="#588">588</a> <em>     * Parses an XML document. This method can only accept DocumentInputSource</em>
<a name="589" href="#589">589</a> <em>     * inputs otherwise a {@link SAXNotSupportedException}exception is thrown.</em>
<a name="590" href="#590">590</a> <em>     * </em>
<a name="591" href="#591">591</a> <em>     * @param input</em>
<a name="592" href="#592">592</a> <em>     *            DOCUMENT ME!</em>
<a name="593" href="#593">593</a> <em>     * </em>
<a name="594" href="#594">594</a> <em>     * @throws SAXException</em>
<a name="595" href="#595">595</a> <em>     *             DOCUMENT ME!</em>
<a name="596" href="#596">596</a> <em>     * @throws SAXNotSupportedException</em>
<a name="597" href="#597">597</a> <em>     *             if the input source is not wrapping a dom4j document</em>
<a name="598" href="#598">598</a> <em>     */</em>
<a name="599" href="#599">599</a>     <strong>public</strong> <strong>void</strong> parse(InputSource input) throws SAXException {
<a name="600" href="#600">600</a>         <strong>if</strong> (input instanceof DocumentInputSource) {
<a name="601" href="#601">601</a>             <a href="../../../org/dom4j/io/DocumentInputSource.html">DocumentInputSource</a> documentInput = (DocumentInputSource) input;
<a name="602" href="#602">602</a>             <a href="../../../org/dom4j/Document.html">Document</a> document = documentInput.getDocument();
<a name="603" href="#603">603</a>             write(document);
<a name="604" href="#604">604</a>         } <strong>else</strong> {
<a name="605" href="#605">605</a>             <strong>throw</strong> <strong>new</strong> SAXNotSupportedException(
<a name="606" href="#606">606</a>                     <span class="string">"This XMLReader can only accept "</span>
<a name="607" href="#607">607</a>                             + <span class="string">"&lt;dom4j> InputSource objects"</span>);
<a name="608" href="#608">608</a>         }
<a name="609" href="#609">609</a>     }
<a name="610" href="#610">610</a> 
<a name="611" href="#611">611</a>     <em class="comment">// Implementation methods</em>
<a name="612" href="#612">612</a>     <em class="comment">// -------------------------------------------------------------------------</em>
<a name="613" href="#613">613</a>     <strong>protected</strong> <strong>void</strong> writeContent(<a href="../../../org/dom4j/Branch.html">Branch</a> branch, <a href="../../../org/dom4j/tree/NamespaceStack.html">NamespaceStack</a> namespaceStack)
<a name="614" href="#614">614</a>             throws SAXException {
<a name="615" href="#615">615</a>         <strong>for</strong> (Iterator iter = branch.nodeIterator(); iter.hasNext();) {
<a name="616" href="#616">616</a>             Object object = iter.next();
<a name="617" href="#617">617</a> 
<a name="618" href="#618">618</a>             <strong>if</strong> (object instanceof Element) {
<a name="619" href="#619">619</a>                 write((Element) object, namespaceStack);
<a name="620" href="#620">620</a>             } <strong>else</strong> <strong>if</strong> (object instanceof CharacterData) {
<a name="621" href="#621">621</a>                 <strong>if</strong> (object instanceof Text) {
<a name="622" href="#622">622</a>                     <a href="../../../org/dom4j/Text.html">Text</a> text = (Text) object;
<a name="623" href="#623">623</a>                     write(text.getText());
<a name="624" href="#624">624</a>                 } <strong>else</strong> <strong>if</strong> (object instanceof CDATA) {
<a name="625" href="#625">625</a>                     write((CDATA) object);
<a name="626" href="#626">626</a>                 } <strong>else</strong> <strong>if</strong> (object instanceof Comment) {
<a name="627" href="#627">627</a>                     write((Comment) object);
<a name="628" href="#628">628</a>                 } <strong>else</strong> {
<a name="629" href="#629">629</a>                     <strong>throw</strong> <strong>new</strong> SAXException(<span class="string">"Invalid Node in DOM4J content: "</span>
<a name="630" href="#630">630</a>                             + object + <span class="string">" of type: "</span> + object.getClass());
<a name="631" href="#631">631</a>                 }
<a name="632" href="#632">632</a>             } <strong>else</strong> <strong>if</strong> (object instanceof String) {
<a name="633" href="#633">633</a>                 write((String) object);
<a name="634" href="#634">634</a>             } <strong>else</strong> <strong>if</strong> (object instanceof Entity) {
<a name="635" href="#635">635</a>                 write((Entity) object);
<a name="636" href="#636">636</a>             } <strong>else</strong> <strong>if</strong> (object instanceof ProcessingInstruction) {
<a name="637" href="#637">637</a>                 write((ProcessingInstruction) object);
<a name="638" href="#638">638</a>             } <strong>else</strong> <strong>if</strong> (object instanceof Namespace) {
<a name="639" href="#639">639</a>                 write((Namespace) object);
<a name="640" href="#640">640</a>             } <strong>else</strong> {
<a name="641" href="#641">641</a>                 <strong>throw</strong> <strong>new</strong> SAXException(<span class="string">"Invalid Node in DOM4J content: "</span>
<a name="642" href="#642">642</a>                         + object);
<a name="643" href="#643">643</a>             }
<a name="644" href="#644">644</a>         }
<a name="645" href="#645">645</a>     }
<a name="646" href="#646">646</a> 
<a name="647" href="#647">647</a>     <em>/**<em>*</em></em>
<a name="648" href="#648">648</a> <em>     * The {@link org.xml.sax.Locator}is only really useful when parsing a</em>
<a name="649" href="#649">649</a> <em>     * textual document as its main purpose is to identify the line and column</em>
<a name="650" href="#650">650</a> <em>     * number. Since we are processing an in memory tree which will probably</em>
<a name="651" href="#651">651</a> <em>     * have its line number information removed, we'll just use -1 for the line</em>
<a name="652" href="#652">652</a> <em>     * and column numbers.</em>
<a name="653" href="#653">653</a> <em>     * </em>
<a name="654" href="#654">654</a> <em>     * @param document</em>
<a name="655" href="#655">655</a> <em>     *            DOCUMENT ME!</em>
<a name="656" href="#656">656</a> <em>     * </em>
<a name="657" href="#657">657</a> <em>     * @throws SAXException</em>
<a name="658" href="#658">658</a> <em>     *             DOCUMENT ME!</em>
<a name="659" href="#659">659</a> <em>     */</em>
<a name="660" href="#660">660</a>     <strong>protected</strong> <strong>void</strong> documentLocator(<a href="../../../org/dom4j/Document.html">Document</a> document) throws SAXException {
<a name="661" href="#661">661</a>         LocatorImpl locator = <strong>new</strong> LocatorImpl();
<a name="662" href="#662">662</a> 
<a name="663" href="#663">663</a>         String publicID = <strong>null</strong>;
<a name="664" href="#664">664</a>         String systemID = <strong>null</strong>;
<a name="665" href="#665">665</a>         <a href="../../../org/dom4j/DocumentType.html">DocumentType</a> docType = document.getDocType();
<a name="666" href="#666">666</a> 
<a name="667" href="#667">667</a>         <strong>if</strong> (docType != <strong>null</strong>) {
<a name="668" href="#668">668</a>             publicID = docType.getPublicID();
<a name="669" href="#669">669</a>             systemID = docType.getSystemID();
<a name="670" href="#670">670</a>         }
<a name="671" href="#671">671</a> 
<a name="672" href="#672">672</a>         <strong>if</strong> (publicID != <strong>null</strong>) {
<a name="673" href="#673">673</a>             locator.setPublicId(publicID);
<a name="674" href="#674">674</a>         }
<a name="675" href="#675">675</a> 
<a name="676" href="#676">676</a>         <strong>if</strong> (systemID != <strong>null</strong>) {
<a name="677" href="#677">677</a>             locator.setSystemId(systemID);
<a name="678" href="#678">678</a>         }
<a name="679" href="#679">679</a> 
<a name="680" href="#680">680</a>         locator.setLineNumber(-1);
<a name="681" href="#681">681</a>         locator.setColumnNumber(-1);
<a name="682" href="#682">682</a> 
<a name="683" href="#683">683</a>         contentHandler.setDocumentLocator(locator);
<a name="684" href="#684">684</a>     }
<a name="685" href="#685">685</a> 
<a name="686" href="#686">686</a>     <strong>protected</strong> <strong>void</strong> entityResolver(<a href="../../../org/dom4j/Document.html">Document</a> document) throws SAXException {
<a name="687" href="#687">687</a>         <strong>if</strong> (entityResolver != <strong>null</strong>) {
<a name="688" href="#688">688</a>             <a href="../../../org/dom4j/DocumentType.html">DocumentType</a> docType = document.getDocType();
<a name="689" href="#689">689</a> 
<a name="690" href="#690">690</a>             <strong>if</strong> (docType != <strong>null</strong>) {
<a name="691" href="#691">691</a>                 String publicID = docType.getPublicID();
<a name="692" href="#692">692</a>                 String systemID = docType.getSystemID();
<a name="693" href="#693">693</a> 
<a name="694" href="#694">694</a>                 <strong>if</strong> ((publicID != <strong>null</strong>) || (systemID != <strong>null</strong>)) {
<a name="695" href="#695">695</a>                     <strong>try</strong> {
<a name="696" href="#696">696</a>                         entityResolver.resolveEntity(publicID, systemID);
<a name="697" href="#697">697</a>                     } <strong>catch</strong> (IOException e) {
<a name="698" href="#698">698</a>                         <strong>throw</strong> <strong>new</strong> SAXException(<span class="string">"Could not resolve publicID: "</span>
<a name="699" href="#699">699</a>                                 + publicID + <span class="string">" systemID: "</span> + systemID, e);
<a name="700" href="#700">700</a>                     }
<a name="701" href="#701">701</a>                 }
<a name="702" href="#702">702</a>             }
<a name="703" href="#703">703</a>         }
<a name="704" href="#704">704</a>     }
<a name="705" href="#705">705</a> 
<a name="706" href="#706">706</a>     <em>/**<em>*</em></em>
<a name="707" href="#707">707</a> <em>     * We do not yet support DTD or XML Schemas so this method does nothing</em>
<a name="708" href="#708">708</a> <em>     * right now.</em>
<a name="709" href="#709">709</a> <em>     * </em>
<a name="710" href="#710">710</a> <em>     * @param document</em>
<a name="711" href="#711">711</a> <em>     *            DOCUMENT ME!</em>
<a name="712" href="#712">712</a> <em>     * </em>
<a name="713" href="#713">713</a> <em>     * @throws SAXException</em>
<a name="714" href="#714">714</a> <em>     *             DOCUMENT ME!</em>
<a name="715" href="#715">715</a> <em>     */</em>
<a name="716" href="#716">716</a>     <strong>protected</strong> <strong>void</strong> dtdHandler(<a href="../../../org/dom4j/Document.html">Document</a> document) throws SAXException {
<a name="717" href="#717">717</a>     }
<a name="718" href="#718">718</a> 
<a name="719" href="#719">719</a>     <strong>protected</strong> <strong>void</strong> startDocument() throws SAXException {
<a name="720" href="#720">720</a>         contentHandler.startDocument();
<a name="721" href="#721">721</a>     }
<a name="722" href="#722">722</a> 
<a name="723" href="#723">723</a>     <strong>protected</strong> <strong>void</strong> endDocument() throws SAXException {
<a name="724" href="#724">724</a>         contentHandler.endDocument();
<a name="725" href="#725">725</a>     }
<a name="726" href="#726">726</a> 
<a name="727" href="#727">727</a>     <strong>protected</strong> <strong>void</strong> write(<a href="../../../org/dom4j/Element.html">Element</a> element, <a href="../../../org/dom4j/tree/NamespaceStack.html">NamespaceStack</a> namespaceStack)
<a name="728" href="#728">728</a>             throws SAXException {
<a name="729" href="#729">729</a>         <strong>int</strong> stackSize = namespaceStack.size();
<a name="730" href="#730">730</a>         AttributesImpl namespaceAttributes = startPrefixMapping(element,
<a name="731" href="#731">731</a>                 namespaceStack);
<a name="732" href="#732">732</a>         startElement(element, namespaceAttributes);
<a name="733" href="#733">733</a>         writeContent(element, namespaceStack);
<a name="734" href="#734">734</a>         endElement(element);
<a name="735" href="#735">735</a>         endPrefixMapping(namespaceStack, stackSize);
<a name="736" href="#736">736</a>     }
<a name="737" href="#737">737</a> 
<a name="738" href="#738">738</a>     <em>/**<em>*</em></em>
<a name="739" href="#739">739</a> <em>     * Fires a SAX startPrefixMapping event for all the namespaceStack which</em>
<a name="740" href="#740">740</a> <em>     * have just come into scope</em>
<a name="741" href="#741">741</a> <em>     * </em>
<a name="742" href="#742">742</a> <em>     * @param element</em>
<a name="743" href="#743">743</a> <em>     *            DOCUMENT ME!</em>
<a name="744" href="#744">744</a> <em>     * @param namespaceStack</em>
<a name="745" href="#745">745</a> <em>     *            DOCUMENT ME!</em>
<a name="746" href="#746">746</a> <em>     * </em>
<a name="747" href="#747">747</a> <em>     * @return DOCUMENT ME!</em>
<a name="748" href="#748">748</a> <em>     * </em>
<a name="749" href="#749">749</a> <em>     * @throws SAXException</em>
<a name="750" href="#750">750</a> <em>     *             DOCUMENT ME!</em>
<a name="751" href="#751">751</a> <em>     */</em>
<a name="752" href="#752">752</a>     <strong>protected</strong> AttributesImpl startPrefixMapping(<a href="../../../org/dom4j/Element.html">Element</a> element,
<a name="753" href="#753">753</a>             <a href="../../../org/dom4j/tree/NamespaceStack.html">NamespaceStack</a> namespaceStack) throws SAXException {
<a name="754" href="#754">754</a>         AttributesImpl namespaceAttributes = <strong>null</strong>;
<a name="755" href="#755">755</a> 
<a name="756" href="#756">756</a>         <em class="comment">// start with the namespace of the element</em>
<a name="757" href="#757">757</a>         <a href="../../../org/dom4j/Namespace.html">Namespace</a> elementNamespace = element.getNamespace();
<a name="758" href="#758">758</a> 
<a name="759" href="#759">759</a>         <strong>if</strong> ((elementNamespace != <strong>null</strong>)
<a name="760" href="#760">760</a>                 &amp;&amp; !isIgnoreableNamespace(elementNamespace, namespaceStack)) {
<a name="761" href="#761">761</a>             namespaceStack.push(elementNamespace);
<a name="762" href="#762">762</a>             contentHandler.startPrefixMapping(elementNamespace.getPrefix(),
<a name="763" href="#763">763</a>                     elementNamespace.getURI());
<a name="764" href="#764">764</a>             namespaceAttributes = addNamespaceAttribute(namespaceAttributes,
<a name="765" href="#765">765</a>                     elementNamespace);
<a name="766" href="#766">766</a>         }
<a name="767" href="#767">767</a> 
<a name="768" href="#768">768</a>         List declaredNamespaces = element.declaredNamespaces();
<a name="769" href="#769">769</a> 
<a name="770" href="#770">770</a>         <strong>for</strong> (<strong>int</strong> i = 0, size = declaredNamespaces.size(); i &lt; size; i++) {
<a name="771" href="#771">771</a>             <a href="../../../org/dom4j/Namespace.html">Namespace</a> namespace = (Namespace) declaredNamespaces.get(i);
<a name="772" href="#772">772</a> 
<a name="773" href="#773">773</a>             <strong>if</strong> (!isIgnoreableNamespace(namespace, namespaceStack)) {
<a name="774" href="#774">774</a>                 namespaceStack.push(namespace);
<a name="775" href="#775">775</a>                 contentHandler.startPrefixMapping(namespace.getPrefix(),
<a name="776" href="#776">776</a>                         namespace.getURI());
<a name="777" href="#777">777</a>                 namespaceAttributes = addNamespaceAttribute(
<a name="778" href="#778">778</a>                         namespaceAttributes, namespace);
<a name="779" href="#779">779</a>             }
<a name="780" href="#780">780</a>         }
<a name="781" href="#781">781</a> 
<a name="782" href="#782">782</a>         <strong>return</strong> namespaceAttributes;
<a name="783" href="#783">783</a>     }
<a name="784" href="#784">784</a> 
<a name="785" href="#785">785</a>     <em>/**<em>*</em></em>
<a name="786" href="#786">786</a> <em>     * Fires a SAX endPrefixMapping event for all the namespaceStack which have</em>
<a name="787" href="#787">787</a> <em>     * gone out of scope</em>
<a name="788" href="#788">788</a> <em>     * </em>
<a name="789" href="#789">789</a> <em>     * @param stack</em>
<a name="790" href="#790">790</a> <em>     *            DOCUMENT ME!</em>
<a name="791" href="#791">791</a> <em>     * @param stackSize</em>
<a name="792" href="#792">792</a> <em>     *            DOCUMENT ME!</em>
<a name="793" href="#793">793</a> <em>     * </em>
<a name="794" href="#794">794</a> <em>     * @throws SAXException</em>
<a name="795" href="#795">795</a> <em>     *             DOCUMENT ME!</em>
<a name="796" href="#796">796</a> <em>     */</em>
<a name="797" href="#797">797</a>     <strong>protected</strong> <strong>void</strong> endPrefixMapping(<a href="../../../org/dom4j/tree/NamespaceStack.html">NamespaceStack</a> stack, <strong>int</strong> stackSize)
<a name="798" href="#798">798</a>             throws SAXException {
<a name="799" href="#799">799</a>         <strong>while</strong> (stack.size() > stackSize) {
<a name="800" href="#800">800</a>             <a href="../../../org/dom4j/Namespace.html">Namespace</a> namespace = stack.pop();
<a name="801" href="#801">801</a> 
<a name="802" href="#802">802</a>             <strong>if</strong> (namespace != <strong>null</strong>) {
<a name="803" href="#803">803</a>                 contentHandler.endPrefixMapping(namespace.getPrefix());
<a name="804" href="#804">804</a>             }
<a name="805" href="#805">805</a>         }
<a name="806" href="#806">806</a>     }
<a name="807" href="#807">807</a> 
<a name="808" href="#808">808</a>     <strong>protected</strong> <strong>void</strong> startElement(<a href="../../../org/dom4j/Element.html">Element</a> element,
<a name="809" href="#809">809</a>             AttributesImpl namespaceAttributes) throws SAXException {
<a name="810" href="#810">810</a>         contentHandler.startElement(element.getNamespaceURI(), element
<a name="811" href="#811">811</a>                 .getName(), element.getQualifiedName(), createAttributes(
<a name="812" href="#812">812</a>                 element, namespaceAttributes));
<a name="813" href="#813">813</a>     }
<a name="814" href="#814">814</a> 
<a name="815" href="#815">815</a>     <strong>protected</strong> <strong>void</strong> endElement(<a href="../../../org/dom4j/Element.html">Element</a> element) throws SAXException {
<a name="816" href="#816">816</a>         contentHandler.endElement(element.getNamespaceURI(), element.getName(),
<a name="817" href="#817">817</a>                 element.getQualifiedName());
<a name="818" href="#818">818</a>     }
<a name="819" href="#819">819</a> 
<a name="820" href="#820">820</a>     <strong>protected</strong> Attributes createAttributes(<a href="../../../org/dom4j/Element.html">Element</a> element,
<a name="821" href="#821">821</a>             Attributes namespaceAttributes) throws SAXException {
<a name="822" href="#822">822</a>         attributes.clear();
<a name="823" href="#823">823</a> 
<a name="824" href="#824">824</a>         <strong>if</strong> (namespaceAttributes != <strong>null</strong>) {
<a name="825" href="#825">825</a>             attributes.setAttributes(namespaceAttributes);
<a name="826" href="#826">826</a>         }
<a name="827" href="#827">827</a> 
<a name="828" href="#828">828</a>         <strong>for</strong> (Iterator iter = element.attributeIterator(); iter.hasNext();) {
<a name="829" href="#829">829</a>             <a href="../../../org/dom4j/Attribute.html">Attribute</a> attribute = (Attribute) iter.next();
<a name="830" href="#830">830</a>             attributes.addAttribute(attribute.getNamespaceURI(), attribute
<a name="831" href="#831">831</a>                     .getName(), attribute.getQualifiedName(), <span class="string">"CDATA"</span>,
<a name="832" href="#832">832</a>                     attribute.getValue());
<a name="833" href="#833">833</a>         }
<a name="834" href="#834">834</a> 
<a name="835" href="#835">835</a>         <strong>return</strong> attributes;
<a name="836" href="#836">836</a>     }
<a name="837" href="#837">837</a> 
<a name="838" href="#838">838</a>     <em>/**<em>*</em></em>
<a name="839" href="#839">839</a> <em>     * If isDelcareNamespaceAttributes() is enabled then this method will add</em>
<a name="840" href="#840">840</a> <em>     * the given namespace declaration to the supplied attributes object,</em>
<a name="841" href="#841">841</a> <em>     * creating one if it does not exist.</em>
<a name="842" href="#842">842</a> <em>     * </em>
<a name="843" href="#843">843</a> <em>     * @param attrs</em>
<a name="844" href="#844">844</a> <em>     *            DOCUMENT ME!</em>
<a name="845" href="#845">845</a> <em>     * @param namespace</em>
<a name="846" href="#846">846</a> <em>     *            DOCUMENT ME!</em>
<a name="847" href="#847">847</a> <em>     * </em>
<a name="848" href="#848">848</a> <em>     * @return DOCUMENT ME!</em>
<a name="849" href="#849">849</a> <em>     */</em>
<a name="850" href="#850">850</a>     <strong>protected</strong> AttributesImpl addNamespaceAttribute(AttributesImpl attrs,
<a name="851" href="#851">851</a>             <a href="../../../org/dom4j/Namespace.html">Namespace</a> namespace) {
<a name="852" href="#852">852</a>         <strong>if</strong> (declareNamespaceAttributes) {
<a name="853" href="#853">853</a>             <strong>if</strong> (attrs == <strong>null</strong>) {
<a name="854" href="#854">854</a>                 attrs = <strong>new</strong> AttributesImpl();
<a name="855" href="#855">855</a>             }
<a name="856" href="#856">856</a> 
<a name="857" href="#857">857</a>             String prefix = namespace.getPrefix();
<a name="858" href="#858">858</a>             String qualifiedName = <span class="string">"xmlns"</span>;
<a name="859" href="#859">859</a> 
<a name="860" href="#860">860</a>             <strong>if</strong> ((prefix != <strong>null</strong>) &amp;&amp; (prefix.length() > 0)) {
<a name="861" href="#861">861</a>                 qualifiedName = <span class="string">"xmlns:"</span> + prefix;
<a name="862" href="#862">862</a>             }
<a name="863" href="#863">863</a> 
<a name="864" href="#864">864</a>             String uri = <span class="string">""</span>;
<a name="865" href="#865">865</a>             String localName = prefix;
<a name="866" href="#866">866</a>             String type = <span class="string">"CDATA"</span>;
<a name="867" href="#867">867</a>             String value = namespace.getURI();
<a name="868" href="#868">868</a> 
<a name="869" href="#869">869</a>             attrs.addAttribute(uri, localName, qualifiedName, type, value);
<a name="870" href="#870">870</a>         }
<a name="871" href="#871">871</a> 
<a name="872" href="#872">872</a>         <strong>return</strong> attrs;
<a name="873" href="#873">873</a>     }
<a name="874" href="#874">874</a> 
<a name="875" href="#875">875</a>     <em>/**<em>*</em></em>
<a name="876" href="#876">876</a> <em>     * DOCUMENT ME!</em>
<a name="877" href="#877">877</a> <em>     * </em>
<a name="878" href="#878">878</a> <em>     * @param namespace</em>
<a name="879" href="#879">879</a> <em>     *            DOCUMENT ME!</em>
<a name="880" href="#880">880</a> <em>     * @param namespaceStack</em>
<a name="881" href="#881">881</a> <em>     *            DOCUMENT ME!</em>
<a name="882" href="#882">882</a> <em>     * </em>
<a name="883" href="#883">883</a> <em>     * @return true if the given namespace is an ignorable namespace (such as</em>
<a name="884" href="#884">884</a> <em>     *         Namespace.NO_NAMESPACE or Namespace.XML_NAMESPACE) or if the</em>
<a name="885" href="#885">885</a> <em>     *         namespace has already been declared in the current scope</em>
<a name="886" href="#886">886</a> <em>     */</em>
<a name="887" href="#887">887</a>     <strong>protected</strong> <strong>boolean</strong> isIgnoreableNamespace(<a href="../../../org/dom4j/Namespace.html">Namespace</a> namespace,
<a name="888" href="#888">888</a>             <a href="../../../org/dom4j/tree/NamespaceStack.html">NamespaceStack</a> namespaceStack) {
<a name="889" href="#889">889</a>         <strong>if</strong> (namespace.equals(Namespace.NO_NAMESPACE)
<a name="890" href="#890">890</a>                 || namespace.equals(Namespace.XML_NAMESPACE)) {
<a name="891" href="#891">891</a>             <strong>return</strong> <strong>true</strong>;
<a name="892" href="#892">892</a>         }
<a name="893" href="#893">893</a> 
<a name="894" href="#894">894</a>         String uri = namespace.getURI();
<a name="895" href="#895">895</a> 
<a name="896" href="#896">896</a>         <strong>if</strong> ((uri == <strong>null</strong>) || (uri.length() &lt;= 0)) {
<a name="897" href="#897">897</a>             <strong>return</strong> <strong>true</strong>;
<a name="898" href="#898">898</a>         }
<a name="899" href="#899">899</a> 
<a name="900" href="#900">900</a>         <strong>return</strong> namespaceStack.contains(namespace);
<a name="901" href="#901">901</a>     }
<a name="902" href="#902">902</a> 
<a name="903" href="#903">903</a>     <em>/**<em>*</em></em>
<a name="904" href="#904">904</a> <em>     * Ensures non-null content handlers?</em>
<a name="905" href="#905">905</a> <em>     */</em>
<a name="906" href="#906">906</a>     <strong>protected</strong> <strong>void</strong> checkForNullHandlers() {
<a name="907" href="#907">907</a>     }
<a name="908" href="#908">908</a> }
<a name="909" href="#909">909</a> 
<a name="910" href="#910">910</a> <em class="comment">/*</em>
<a name="911" href="#911">911</a> <em class="comment"> * Redistribution and use of this software and associated documentation</em>
<a name="912" href="#912">912</a> <em class="comment"> * ("Software"), with or without modification, are permitted provided that the</em>
<a name="913" href="#913">913</a> <em class="comment"> * following conditions are met:</em>
<a name="914" href="#914">914</a> <em class="comment"> * </em>
<a name="915" href="#915">915</a> <em class="comment"> * 1. Redistributions of source code must retain copyright statements and</em>
<a name="916" href="#916">916</a> <em class="comment"> * notices. Redistributions must also contain a copy of this document.</em>
<a name="917" href="#917">917</a> <em class="comment"> * </em>
<a name="918" href="#918">918</a> <em class="comment"> * 2. Redistributions in binary form must reproduce the above copyright notice,</em>
<a name="919" href="#919">919</a> <em class="comment"> * this list of conditions and the following disclaimer in the documentation</em>
<a name="920" href="#920">920</a> <em class="comment"> * and/or other materials provided with the distribution.</em>
<a name="921" href="#921">921</a> <em class="comment"> * </em>
<a name="922" href="#922">922</a> <em class="comment"> * 3. The name "DOM4J" must not be used to endorse or promote products derived</em>
<a name="923" href="#923">923</a> <em class="comment"> * from this Software without prior written permission of MetaStuff, Ltd. For</em>
<a name="924" href="#924">924</a> <em class="comment"> * written permission, please contact dom4j-info@metastuff.com.</em>
<a name="925" href="#925">925</a> <em class="comment"> * </em>
<a name="926" href="#926">926</a> <em class="comment"> * 4. Products derived from this Software may not be called "DOM4J" nor may</em>
<a name="927" href="#927">927</a> <em class="comment"> * "DOM4J" appear in their names without prior written permission of MetaStuff,</em>
<a name="928" href="#928">928</a> <em class="comment"> * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.</em>
<a name="929" href="#929">929</a> <em class="comment"> * </em>
<a name="930" href="#930">930</a> <em class="comment"> * 5. Due credit should be given to the DOM4J Project - <a href="http://www.dom4j.org" target="alexandria_uri">http://www.dom4j.org</a></em>
<a name="931" href="#931">931</a> <em class="comment"> * </em>
<a name="932" href="#932">932</a> <em class="comment"> * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND</em>
<a name="933" href="#933">933</a> <em class="comment"> * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</em>
<a name="934" href="#934">934</a> <em class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</em>
<a name="935" href="#935">935</a> <em class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE</em>
<a name="936" href="#936">936</a> <em class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</em>
<a name="937" href="#937">937</a> <em class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</em>
<a name="938" href="#938">938</a> <em class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</em>
<a name="939" href="#939">939</a> <em class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</em>
<a name="940" href="#940">940</a> <em class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</em>
<a name="941" href="#941">941</a> <em class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</em>
<a name="942" href="#942">942</a> <em class="comment"> * POSSIBILITY OF SUCH DAMAGE.</em>
<a name="943" href="#943">943</a> <em class="comment"> * </em>
<a name="944" href="#944">944</a> <em class="comment"> * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.</em>
<a name="945" href="#945">945</a> <em class="comment"> */</em>
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>





See more files for this project here

PeerWriter

PeerWriter is a collaborative text editor. Multiple peers can edit the same document while they see overall changes in real-time. PeerWriter is based on a decentralized infrastructure, using a non-locking concurrency protocol ensuring global consistency.

Project homepage: http://sourceforge.net/projects/peerwriter
Programming language(s): Java,XML
License: gpl2

  DOMReader.html
  DOMWriter.html
  DispatchHandler.html
  DocumentInputSource.html
  DocumentResult.html
  DocumentSource.html
  ElementModifier.html
  ElementStack.html
  HTMLWriter.html
  JAXPHelper.html
  OutputFormat.html
  PruningDispatchHandler.html
  PruningElementStack.html
  SAXContentHandler.html
  SAXEventRecorder.html
  SAXHelper.html
  SAXModifier.html
  SAXModifyContentHandler.html
  SAXModifyElementHandler.html
  SAXModifyException.html
  SAXModifyReader.html
  SAXReader.html
  SAXValidator.html
  SAXWriter.html
  STAXEventReader.html
  STAXEventWriter.html
  XMLResult.html
  XMLWriter.html
  XPP3Reader.html
  XPPReader.html
  package-frame.html
  package-summary.html