Thursday 19 April 2007

XML parser JDOM

import java.io.StringReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class XMLParser {
private Map processDetail(Element ee){
Map m = new HashMap();
List l = ee.getChildren();
System.out.println("==rootelement=="+l);
int size = l.size();
for(Iterator itr = l.iterator(); size > 0; size--){
Element e = (Element)itr.next();
System.out.println("###############"+ e.getName()+ e.getTextTrim());
m.put(e.getName(), e.getTextTrim());
}
return m;
}

private void processProject( Element e) {
List l = e.getChildren();
System.out.println("==rootelement=="+l);
int size = l.size();
for(Iterator itr = l.iterator(); size > 0; size--){
Element ee = (Element)itr.next();
if("project".equals(ee.getName())){
String projectName = ee.getAttributeValue("name");
Map details = processDetail(ee);
// LOG.info("~~~~~~~~~~~ Map put: ",projectName," ",details);
// bar.put(projectName, details);
log("====projectName=="+projectName+"==detail==="+details);
} else {
// bar.put(e.getName(), e.getTextTrim());
out.println( e.getName()+"== e.getTextTrim()"+ e.getTextTrim());
}
}
}


public void process(String xml) throws Exception{
// BAGActionRequest bar = new BAGActionRequest();
try{
SAXBuilder builder = new SAXBuilder();
// DOMBuilder builder = new DOMBuilder();
builder.setValidation( false );
Document document = builder.build( new StringReader(xml) );
// Document document = builder.build(new InputStreamReader( null, xml.toString()));
Element element = document.getRootElement();
List l = element.getChildren();
System.out.println("==rootelement=="+l);
int size = l.size();
for(Iterator itr = l.iterator(); size>0; size--){
Element e = (Element)itr.next();
String name = e.getName();
if("action".equals(name)){
// bar.setRequestName(e.getTextTrim());
System.out.println("==action=="+e.getTextTrim());
}
else if("detail".equals(name)){
processProject( e);
} else{
throw new Exception("XML not in the expected format.");
}
}
}
catch(JDOMException ex) {
throw new Exception("JDOM Exception", ex);
}
// return bar;
}


public static void main(String a[]){
"<bag>" + "<action>bag-execution-result</action>" + "<detail>" + "<project name='Address'>" + "<component>ASA</component>" + "<tag>TEST_81_200512121300</tag>" + "<request-id>323</request-id>" + "<tag-id>378</tag-id>" + "<date>2006-11-07 15:04</date>" + "<security-needed>no</security-needed>" + "<type>MAINTENANCE</type>" + "<result-ci>1.0</result-ci>" + "<result-pmd-highest>0</result-pmd-highest>" + "<result-pmd-high>0</result-pmd-high>" + "<result-pmd-medium>0</result-pmd-medium>" + "<result-cc-open-issue>0</result-cc-open-issue>" + "<result>approved</result>" + "</project>" + "<project name='Acfw'>" + "<component>DBA</component>" + "<tag>TEST_81_200512121300</tag>" + "<request-id>323</request-id>" + "<tag-id>378</tag-id>" + "<date>2006-11-07 15:04</date>" + "<security-needed>no</security-needed>" + "<type>MAINTENANCE</type>" + "<result-ci>1.0</result-ci>" + "<result-pmd-highest>0</result-pmd-highest>" + "<result-pmd-high>0</result-pmd-high>" + "<result-pmd-medium>0</result-pmd-medium>" + "<result-cc-open-issue>0</result-cc-open-issue>" + "<result>approved</result>" + "</project>" + "</detail>" + "</bag>";

try {
new XMLParser().process(xml);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

No comments: