xml-ezparse

the xml-ezparse site
 
   

Code Example

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