Depends on what you want. You just want a list of sorted nodes, or do
you want them to be in sorted order in the document?
Here's some psudocode that uses insertion sort to build a list of sorted
elements:
Element main = (Element)document.selectSingleNode("//main");
List sorted = new ArrayList(main.elements().size());
for(Iterator it = main.elements().iterator(); it.hasNext(); ){
Element current = it.next();
int id = Integer.parseInt(current.attributeValue("id"));
for(int i = 0; i<sorted.size(); i++){
int sortedId = ( (Element)sorted.get(i) ).attributeValue("id");
if( id > sortedId ){
sorted.add(current, i+1);
}else if(i == 0){
sorted.add(current, 0);
}
}
}
If you want to sort them in place in the document, you could use bubble
sort or something.
--Evan
Krishnam Raju wrote:
> Hi All,
>
> Below is the sample XML and i want to sort it based on "id" attribute that
> is available in the "key" element.
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <main>
> <key id="24">
> <insert>
> <triggername>ACTIVITY_TRIG</triggername>
> <schema>ACTIVITY</schema>
> </insert>
> </key>
> <key id="47">
> <update>
> <triggername>POLICY.RISK_TRIG</triggername>
> <schema>POLICY.RISK</schema>
> </update>
> </key>
> <key id="70">
> <insert>
> <triggername>ACTIVITY_TRIG</triggername>
> <schema>ACTIVITY</schema>
> <cascade/>
> </insert>
> </key>
> <key id="192">
> <update>
> <triggername>POLICY.GENERAL_TRIG</triggername>
> <schema>POLICY.GENERAL</schema>
> </update>
> </key>
> <key id="93">
> <update>
> <triggername>POLICY.GENERAL_TRIG</triggername>
> <schema>POLICY.GENERAL</schema>
> <cascade/>
> </update>
> </key>
> </main>
>
> I have written the below code to do sorting.
>
>
> SAXReader reader = new SAXReader();
> Document document = reader.read( new File( "d:/test1.xml" ) );
> List speakers = document.selectNodes( "//main/key", "@id");
>
> for(int i=0;i<speakers.size();i++)
> {
> Element el = (Element)speakers.get(i);
> System.out.println(el.attributeValue("id"));
> }
>
> and the output i got was
>
> 192
> 24
> 47
> 70
> 93
>
> I tried different alternatives but i was not able to sort this in ascending
> order.
>
> Please advice.
>
> Thanks,
> Raju
>
>
> SPAN Systems Corporation, Bangalore.
> "Steering Progress, Together"
> ===================================================
> This email message and any attachments is confidential and
> intended only for the use of an individual or entity named above
> and may contain information that is privileged, confidential or
> exempt from disclosure under applicable law. If you are not the
> intended recipient, you are notified that any dissemination,
> distribution or copying of this email is strictly prohibited.If you
> have received this email in error, please notify us immediately
> by return email or [EMAIL PROTECTED] and destroy the
> original message. Opinions, conclusions, and other information
> in this message that do not relate to the official business of SPAN,
> shall be understood to be neither given nor endorsed by SPAN.
>
>
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> dom4j-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/dom4j-user
>
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
dom4j-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dom4j-user