Code Example
| 
PDF |
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]