<div>Hi Syloke Soong,</div>
<div>Thank you very much for your reply.</div>
<div>I have tried the three example code that you gave </div>
<div>previously. However, it still could&#39;nt work.</div>
<div>The new one that you gave, I haven&#39;t try yet since </div>
<div>I&#39;m outside of my place now....</div>
<div>For your information, currently, the result that I got</div>
<div>was like below:</div>
<div>&nbsp;</div>
<div><em>&lt;treatmentplans&gt;<br>&nbsp; &lt;Plans_Group ID=&quot;7&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &lt;Plan ID=&quot;7.1&quot; Name=&quot;Doctor Follow Up&quot; /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;Plan ID=&quot;7.2&quot; Name=&quot;Haemodialysis&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Goal&gt;Detect the stage of Kidney Disease&lt;/Goal&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/Plan&gt;<br>&nbsp;&nbsp;&nbsp; &lt;Plan ID=&quot;7.3&quot; Name=&quot;Diet in Kidney Disease&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Goal&gt;Detect the stage of Kidney Disease&lt;/Goal&gt;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Goal&gt;To give patient a life&lt;/Goal&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/Plan&gt;<br>&nbsp; &lt;/Plans_Group&gt;<br>&lt;/treatmentplans&gt;</em></div>
<div>&nbsp;</div>
<div>In fact, the real result that I should get should be like below:</div>
<div>&nbsp;</div>
<div>
<div><em>&lt;treatmentplans&gt;<br>&nbsp; &lt;Plans_Group ID=&quot;7&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &lt;Plan ID=&quot;7.1&quot; Name=&quot;Doctor Follow Up&quot; /&gt;</em></div>
<div><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<em>&nbsp;&lt;Goal&gt;Detect the stage of Kidney Disease&lt;/Goal&gt;</em></em></div>
<div><em>&nbsp;&nbsp;&nbsp; &lt;/Plan&gt;<br>&nbsp;&nbsp;&nbsp; &lt;Plan ID=&quot;7.2&quot; Name=&quot;Haemodialysis&quot;&gt;</em></div>
<div><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>&lt;Goal&gt;To give patient a life&lt;/Goal&gt;</em><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Plan&gt;<br>&nbsp;&nbsp;&nbsp; &lt;Plan ID=&quot;7.3&quot; Name=&quot;Diet in Kidney Disease&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<font color="#ff0000">&lt;Goal&gt;To ensure the patient healthy life&lt;/Goal&gt;
<br></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Plan&gt;<br>&nbsp; &lt;/Plans_Group&gt;<br>&lt;/treatmentplans&gt;</em></div></div>
<div><br>The red text showed the goal that didn&#39;t include.</div>
<div>&nbsp;</div>
<div>Below was my code:</div>
<div><em>public static void main(String args[])<br>&nbsp;{<br>&nbsp;&nbsp;String ID=&quot;&quot;,Name=&quot;&quot;,goal=&quot;&quot;;<br>&nbsp;&nbsp;Element Goal = new Element(&quot;Goal&quot;);<br>&nbsp;&nbsp;Element Plan = new Element(&quot;Plan&quot;);
<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;//Read XML file and create XML document object<br>&nbsp;&nbsp;SAXBuilder saxobj = new SAXBuilder();<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;try {<br>&nbsp;&nbsp;&nbsp;//get Document sourceDoc XML file<br>&nbsp;&nbsp;&nbsp;Document sourceDoc = saxobj.build(&quot;PlanRepositoryV6.xml
&quot;);<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;//Set up the XML document builder and parse the input XML file<br>&nbsp;&nbsp;&nbsp;Document document = null;<br>&nbsp;&nbsp;&nbsp;document = saxobj.build( new File( &quot;TreatmentPlans.xml&quot; ) );<br>&nbsp;&nbsp;&nbsp;// get the parent element in original xml file, that you want to 
<br>&nbsp;&nbsp;&nbsp;// add the new data element as child to<br>&nbsp;&nbsp;&nbsp;Element parentElemToAddChildrenTo = document.getRootElement();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;//Get XML node that we want<br>&nbsp;&nbsp;&nbsp;XPath Plans_GroupPath = XPath.newInstance(&quot;//Plans_Group[@ID=&#39;6&#39;]&quot; );
<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;List Plans_GroupList = Plans_GroupPath.selectNodes(sourceDoc);<br>&nbsp;&nbsp;&nbsp;&nbsp;if ( Plans_GroupList == null ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println( &quot;Sorry, no matching element.&quot; );<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( int k = 0; k &lt; Plans_GroupList.size(); k++ ) 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/****<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Retrieve the elements and its children<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *********/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Element Plans_GroupElem = (Element)Plans_GroupList.get(k); <br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;System.out.println(Plans_GroupElem + Plans_GroupElem.getAttributeValue(&quot;ID&quot;));
<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;String PGIDString = Plans_GroupElem.getAttributeValue(&quot;ID&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//Change PG ID from string to integer to add the PG ID value<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;int PGID = Integer.parseInt(PGIDString);<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//Construct new data<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;int NewPGID = PGID + 1;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;String NewPGIDString = Integer.toString(NewPGID);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Element PlansGroup = new Element(&quot;Plans_Group&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlansGroup.setAttribute
(&quot;ID&quot;,NewPGIDString); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;//Retrieve elements one level deep<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Iterator itr = (Plans_GroupElem.getChildren()).iterator();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(itr.hasNext()) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element oneLevelDeep = (Element)itr.next();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Element Plan = new Element(&quot;Plan&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(oneLevelDeep.getName().equals(&quot;Plan&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ID = oneLevelDeep.getAttributeValue(&quot;ID&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;float PID = 
Float.parseFloat(ID);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;float NewPID = PID + 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;String NewPIDString = Float.toString(NewPID);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Name = oneLevelDeep.getAttributeValue(&quot;Name&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Plan.setAttribute
(&quot;ID&quot;,NewPIDString);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Plan.setAttribute(&quot;Name&quot;,Name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;PlansGroup.addContent((Element)Plan.clone()); <font color="#009900">//This work right<br></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Retrieve elements two level deep<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator itr1 = (oneLevelDeep.getChildren()).iterator();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(itr1.hasNext()) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element twoLevelsDeepElem = (Element)itr1.next();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Element Goal = new Element(&quot;Goal&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(twoLevelsDeepElem.getName().equals(&quot;Goal&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;goal = twoLevelsDeepElem.getText();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;System.out.println
(goal);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Goal.setText(goal);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</em><em><font color="#ff0000">&nbsp;Plan.addContent((Element)Goal.clone());&nbsp;</font><font color="#009900">&nbsp;//This work wrong<br></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Retrieve elements three level deep<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator itr2 = (twoLevelsDeepElem.getChildren()).iterator();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(itr2.hasNext()) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Element threeLevelsDeepElem = (Element)itr2.next();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(threeLevelsDeepElem + threeLevelsDeepElem.getText());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List fourLevelsDeep = threeLevelsDeepElem.getChildren();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Retrieve elements four level deep
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;/****<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; * Open new XML file and write the elements and its children on it<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; *********/<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentElemToAddChildrenTo.addContent
(PlansGroup);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//output the XML document to output file -- which can be the <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//original file you read from.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLOutputter outp = new XMLOutputter( Format.getPrettyFormat() );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
outp.output( document, new OutputStreamWriter( <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new FileOutputStream( &quot;TreatmentPlans.xml&quot; ), &quot;UTF-8&quot; ) );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (UnsupportedEncodingException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (FileNotFoundException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}//end for loop <br>&nbsp;&nbsp;&nbsp;&nbsp;}//end else&nbsp;&nbsp;<br>&nbsp;&nbsp;} catch(JDOMException je) {
<br>&nbsp;&nbsp;&nbsp;je.printStackTrace();<br>&nbsp;&nbsp;} catch (IOException ie) {<br>&nbsp;&nbsp;&nbsp;ie.printStackTrace();<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;}//end main</em></div>
<div><br>To others, have any ideas?</div>
<div>Please help me... I really need help ......</div>
<div>&nbsp;</div>
<div><span class="gmail_quote">On 3/20/07, <b class="gmail_sendername">Syloke Soong</b> &lt;<a href="mailto:ssoong@protedyne.com">ssoong@protedyne.com</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">BTW, despite last couple of weeks&#39; debate about issuing a<br>generics-friendly JDOM version, I am thinking we could also do it this
<br>way in Java1.5:<br><br>public List &lt;Element&gt; cloneChildren(Element element)<br>{<br>List &lt;Element&gt;clonedElementList = new Vector();<br>List &lt;Element&gt;origElementList = element.getChildren();<br>for (Element ej: origElementList)
<br>&nbsp;&nbsp; clonedElementList.add((Element)ej.clone());<br><br>return clonedElementList;<br>}<br><br>I have not tried but I&#39;m going to. Can anyone tell me if the above<br>should work? It compiled successfully, though. If I could do it this
<br>way, what is the fuss on issuing a generics-friendly JDOM version all<br>about?<br><br><br>This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the sender immediately. Please note that any views or opinions presented in this email are solely those of the author and do not necessarily represent those of the company. Even though this company takes every precaution to ensure this email is virus-free, the recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email.
<br>Protedyne Corporation, 1000 Day Hill Rd, Windsor, CT 06095, USA,<br><a href="http://www.protedyne.com">www.protedyne.com</a><br><br>_______________________________________________<br>To control your jdom-interest membership:
<br><a href="http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com">http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com</a><br></blockquote></div><br>