Code Example |
Given an XML file
<?xml version="1.0"?> <states> <state name="California" code="CA"> <capital>Sacremento</capital> </state> <state name="New York" code="NY"> <capital>Albany</capital> </state> </states>
The Parsing Code
package test; import org.gnu.xml.ezparse.Context; import org.gnu.xml.ezparse.DefaultContext; import org.gnu.xml.ezparse.Element; import org.gnu.xml.ezparse.ElementAdapter; import org.gnu.xml.ezparse.SimpleParser; import java.util.List; import java.util.LinkedList; public class SimpleParserTest { public static void main(String[] args) throws Exception { SimpleParser simpleParser = new SimpleParser(); Context ctx = new DefaultContext(); ctx.set("stateList", new LinkedList()); addListeners( simpleParser ); simpleParser.parse(args[0], ctx); printStates( ctx ); } /** * Add listeners to the parser. * * @param simpleParser the parser to add listeners to */ private static void addListeners( SimpleParser simpleParser ) { //first listener simpleParser.addElementListener("/states/state", new ElementAdapter() { public void startElement( Element element, Context ctx ) { StateEssence essence = new StateEssence(); ctx.set("essence", essence); } public void endElement( Element element, Context ctx ) { StateEssence essence = (StateEssence) ctx.get("essence"); essence.name = element.getAttribute("name"); essence.code = element.getAttribute("code"); List states = (List) ctx.get("stateList"); states.add( new State( essence ) ); } } ); //second listener simpleParser.addElementListener("/states/state/capital", new ElementAdapter() { public void endElement( Element element, Context ctx ) { StateEssence essence = (StateEssence) ctx.get("essence"); essence.capital = element.getValue(); } } ); } /** * Prints information about each state to standard out. */ private static void printStates( Context ctx ) { List list = (List) ctx.get("stateList"); State[] states = (State[]) list.toArray( new State[ list.size() ] ); for(int i=0; i<states.length; i++) { System.out.println( states[i].toString() ); } } }
The Output
State[name=California, code=CA, captial=Sacremento] State[name=New York, code=NY, captial=Albany]