<br><font size=2 face="sans-serif">As the project was referred to as mpt i used MptElement and MptDocument. I put them into the com.company.mpt package.</font>
<br>
<br><font size=2 face="sans-serif">You also have to create your own JDOMFactory (see below) so that the builder returns the correct classes and away you go.</font>
<br>
<br><font size=2 face="sans-serif">Also because I am working with a document with the same tags and attributes all the time &nbsp;I have added many methods to retrieve certain values</font>
<br><font size=2 face="sans-serif">so rather than call getAttributeValue(&quot;Weight&quot;) i call getWeightAttributeValue() so I can isolate the names of the attributes in one place</font>
<br><font size=2 face="sans-serif">so the maintenance becomes easier. I also created a static build method in MptDocument which uses the correct factory so I can call</font>
<br><font size=2 face="sans-serif">MptDocument.build instead of &nbsp;SAXBuilder.build</font>
<br>
<br><font size=2 face="sans-serif">I have tried some of the parse methods but the problem always seems to come back to knowing how it was stored so you can parse it back, add to that the use of xslt on the stored file and it all gets horribly complicated.</font>
<br>
<br><font size=2 color=#4040c2><tt>/**</tt></font>
<br><font size=2><tt>&nbsp;</tt></font><font size=2 color=#4040c2><tt>*</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>A</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>JDOM</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>Factory</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>class</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>for</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>creating</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>Elements</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>and</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>Document</tt></font>
<br><font size=2><tt>&nbsp;</tt></font><font size=2 color=#4040c2><tt>*</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>used</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>in</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>parsing</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>an</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>xml</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>document</tt></font>
<br><font size=2><tt>&nbsp;</tt></font><font size=2 color=#4040c2><tt>*/</tt></font>
<br><font size=2 color=#820040><tt>public</tt></font><font size=2><tt> </tt></font><font size=2 color=#820040><tt>class</tt></font><font size=2><tt> MptJDOMFactory </tt></font><font size=2 color=#820040><tt>extends</tt></font><font size=2><tt> DefaultJDOMFactory {</tt></font>
<br>
<br>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#4040c2><tt>/**</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</tt></font><font size=2 color=#4040c2><tt>*</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>Constructor</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>required</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>by</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>factory</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</tt></font><font size=2 color=#4040c2><tt>*/</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#820040><tt>public</tt></font><font size=2><tt> MptJDOMFactory() {</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#820040><tt>super</tt></font><font size=2><tt>();</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; }</tt></font>
<br>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#4040c2><tt>/**</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</tt></font><font size=2 color=#4040c2><tt>*</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>Creates</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>an</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>element</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</tt></font><font size=2 color=#4040c2><tt>*/</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#820040><tt>public</tt></font><font size=2><tt> Element element(String name) {</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#820040><tt>return</tt></font><font size=2><tt> MptElement.newMptElement(name);</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; }</tt></font>
<br>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#4040c2><tt>/**</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</tt></font><font size=2 color=#4040c2><tt>*</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>Create</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>the</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>Document</tt></font><font size=2><tt> </tt></font><font size=2 color=#4040c2><tt>object</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</tt></font><font size=2 color=#4040c2><tt>*/</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#820040><tt>public</tt></font><font size=2><tt> Document document(Element e) {</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </tt></font><font size=2 color=#820040><tt>return</tt></font><font size=2><tt> </tt></font><font size=2 color=#820040><tt>new</tt></font><font size=2><tt> MptDocument(e);</tt></font>
<br><font size=2><tt>&nbsp; &nbsp; &nbsp; &nbsp; }</tt></font>
<br><font size=2><tt>}</tt></font><font size=2 face="sans-serif"><br>
<br>
/Phill<br>
IS Dept, Software Engineer.<br>
phill_perryman@mitel.com<br>
http://www.mitel.com<br>
Tel: +44 1291 436023</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td>
<td><font size=1 face="sans-serif"><b>&quot;William Krick&quot; &lt;wkrick@eio-online.com&gt;</b></font>
<br><font size=1 face="sans-serif">Sent by: jdom-interest-admin@jdom.org</font>
<p><font size=1 face="sans-serif">15/07/2003 16:51</font>
<br>
<td><font size=1 face="Arial">&nbsp; &nbsp; &nbsp; &nbsp; </font>
<br><font size=1 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; To: &nbsp; &nbsp; &nbsp; &nbsp;&lt;jdom-interest@jdom.org&gt;</font>
<br><font size=1 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; cc: &nbsp; &nbsp; &nbsp; &nbsp;</font>
<br><font size=1 face="sans-serif">&nbsp; &nbsp; &nbsp; &nbsp; Subject: &nbsp; &nbsp; &nbsp; &nbsp;RE: [jdom-interest] new element methods?</font></table>
<br>
<br>
<br><font size=2 color=blue face="Arial">So you actually extended the Element class, huh?</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">I was thinking about doing that.</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">Currently, I have a bunch of static methods in a Util class in my project.</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">The syntax is a little longer that way...</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">boolean value = Util.getXMLBoolean(element, &quot;TAGNAME&quot;);</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">I think I'd rather extend Element as you did.</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">Just a organizational question...</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">What do you call your extended Element and where is it in your package hierarchy?</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">I've seen people create things like &quot;EnhancedElement&quot; or &quot;MynameElement&quot; and put them in a com.myname.toolkit or com.myname.util package.</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">As for your internationalization problem, you might want to look at java.text.DecimalFormat.parse()</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">Supposedly, you can get set it up to work with different locales.</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">You'd have to somehow know what locale the data was coming from before you parsed it.</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">You might be able to represent a float in exponential notation, I think that it's standardized on a '.' instead of a ','</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 color=blue face="Arial">...</font>
<br><font size=2 color=blue face="Arial">Krick</font>
<br><font size=3 face="Times New Roman">&nbsp;</font>
<br><font size=2 face="Tahoma">-----Original Message-----<b><br>
From:</b> Phill_Perryman@Mitel.COM [mailto:Phill_Perryman@Mitel.COM]<b><br>
Sent:</b> Tuesday, July 15, 2003 11:01 AM<b><br>
To:</b> William Krick<b><br>
Subject:</b> Re: [jdom-interest] new element methods?<br>
</font>
<br><font size=2 face="sans-serif"><br>
I would agree up to the point you have the float. Is there an accepted way to represent a float which does not have an &quot;.&quot; or &quot;,&quot; in it.</font><font size=3 face="Times New Roman"> <br>
</font><font size=2 face="sans-serif"><br>
My biggest problem is that a file created in Europe would have 1.234,00 whereas a uk file would have 1,234.00. Parse will assume the local machine format and so a file sent from one machine to another will fail. I am only storing currency at the moment so I am storing it as</font><font size=3 face="Times New Roman"> <br>
</font><font size=2 face="sans-serif"><br>
return (getInt(attName, 0)/100) (it may be ugly but it works)</font><font size=3 face="Times New Roman"> <br>
</font><font size=2 face="sans-serif"><br>
My extended Element class already has them but I have a</font><font size=3 face="Times New Roman"> <br>
</font><font size=2 face="sans-serif"><br>
getInt(String name, int default) {</font><font size=3 face="Times New Roman"> </font><font size=2 face="Courier New"><br>
int result;<br>
 &nbsp; try{<br>
 &nbsp; &nbsp; result = Integer.parseInt(getChildTextTrim(name));<br>
 &nbsp; }<br>
 &nbsp; catch(Exception ex){<br>
 &nbsp; &nbsp; result = default;<br>
 &nbsp; }<br>
 &nbsp; return result;<br>
 }</font><font size=3 face="Times New Roman"> </font><font size=2 face="sans-serif"><br>
<br>
I would be in favour of adding these in s I personally use them quite a lot.</font><font size=3 face="Times New Roman"> <br>
</font><font size=2 face="sans-serif"><br>
<br>
/Phill<br>
IS Dept, Software Engineer.<br>
phill_perryman@mitel.com<br>
http://www.mitel.com<br>
Tel: +44 1291 436023</font><font size=3 face="Times New Roman"> <br>
<br>
</font>
<table width=100%>
<tr valign=top>
<td width=2%>
<td width=46%><font size=1 face="sans-serif"><b>&quot;William Krick&quot; &lt;wkrick@eio-online.com&gt;</b></font><font size=3 face="Times New Roman"> </font><font size=1 face="sans-serif"><br>
Sent by: jdom-interest-admin@jdom.org</font><font size=3 face="Times New Roman"> </font>
<p><font size=1 face="sans-serif">15/07/2003 15:07</font><font size=3 face="Times New Roman"> </font>
<td width=51%><font size=1 face="Arial">&nbsp; &nbsp; &nbsp; &nbsp; </font><font size=1 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;To: &nbsp; &nbsp; &nbsp; &nbsp;&lt;jdom-interest@jdom.org&gt;</font><font size=3 face="Times New Roman"> </font><font size=1 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;cc: &nbsp; &nbsp; &nbsp; &nbsp;</font><font size=3 face="Times New Roman"> </font><font size=1 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;Subject: &nbsp; &nbsp; &nbsp; &nbsp;[jdom-interest] new element methods?</font></table>
<br><font size=3 face="Times New Roman"><br>
<br>
</font><font size=2 face="Courier New"><br>
I was wondering if it might be useful to add some methods to Element...<br>
<br>
 getInt(java.lang.String name)<br>
<br>
 getFloat(java.lang.String name)<br>
<br>
 getBoolean(java.lang.String name)<br>
<br>
 getString(java.lang.String name)<br>
 <br>
 etc...<br>
<br>
...that are essentially aliases for...<br>
<br>
 getChildTextTrim(java.lang.String name) <br>
<br>
...but with added code that tries to parse the child text string<br>
to the appropriate type...<br>
<br>
<br>
 public boolean getBoolean(String name){<br>
 &nbsp; boolean result;<br>
 &nbsp; try{<br>
 &nbsp; &nbsp; result = getChildTextTrim(name).equalsIgnoreCase(&quot;true&quot;);<br>
 &nbsp; }<br>
 &nbsp; catch(Exception ex){<br>
 &nbsp; &nbsp; result = false;<br>
 &nbsp; }<br>
 &nbsp; return result;<br>
 }<br>
<br>
 public String getString(String name){</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp;String result = getChildTextTrim(name);<br>
 &nbsp; if(result == null)<br>
 &nbsp; &nbsp; return &quot;&quot;;<br>
 &nbsp; return result;<br>
 }<br>
<br>
 public int getInt(String name){<br>
 &nbsp; int result;<br>
 &nbsp; try{<br>
 &nbsp; &nbsp; result = Integer.parseInt(getChildTextTrim(name));<br>
 &nbsp; }<br>
 &nbsp; catch(Exception ex){<br>
 &nbsp; &nbsp; result = 0;<br>
 &nbsp; }<br>
 &nbsp; return result;<br>
 }<br>
<br>
 public float getFloat(String name){<br>
 &nbsp; float result;<br>
 &nbsp; try{<br>
 &nbsp; &nbsp; result = Float.parseFloat(getChildTextTrim(name));<br>
 &nbsp; }<br>
 &nbsp; catch(Exception ex){<br>
 &nbsp; &nbsp; result = 0f;<br>
 &nbsp; }<br>
 &nbsp; return result;<br>
 }<br>
<br>
 etc...<br>
<br>
<br>
...<br>
Krick<br>
_______________________________________________<br>
To control your jdom-interest membership:<br>
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com</font><font size=3 face="Times New Roman"><br>
<br>
</font>
<br>
<br>