Pastebin

Paste #166:

< previous paste - next paste>

Pasted by tdn

Download View as text

import org.xml.sax.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Collections;
import java.util.Random;

/** an example sink for content events. 
  It simply prints what it sees. */


final class Config 
extends org.xml.sax.helpers.DefaultHandler 
implements org.xml.sax.ContentHandler
{
	/* collect data here */
	public ElementNode root=null;
	private ElementNode current=null;

	final public class ElementNode extends Object{
		private String type;
		private String value;
		private ArrayList nodes;
		private ElementNode parent;

		ElementNode(){
			type=null;
			value=null;	
			parent=null;
			nodes=new ArrayList();
		}

		ElementNode(final String s_type,final ElementNode s_parent){
			type=s_type;
			value=null;
			parent=s_parent;
			nodes=new ArrayList();
		}

		public String type(){
			return type;
		}

		public String value(){
			return value;
		}

		public ElementNode node(final String type){
			return node(type,0);
		}

		public ElementNode node(final String type,final int num){
			int cnt=num;
			Iterator i;
			for (i=nodes.listIterator();i.hasNext();){
				ElementNode n=(ElementNode)i.next();
				if (type.equals(n.type())) {
					if (cnt==0) return n;
					cnt--;
				}
			}
			return null;
		}

		public ElementNode node(final int num) {
			if (num>=0&&num<nodes.size()) {return (ElementNode)nodes.get(num);}
			return null;
		}

		int size(final String type) {
			Iterator i;
			int cnt=0;
			for (i=nodes.listIterator();i.hasNext();){
				ElementNode n=(ElementNode)i.next();
				if (type.equals(n.type)) cnt++;
			}
			return cnt;
		}

		int size() { return nodes.size();}

		public void print(){
			System.out.println("<"+type+">"); 
			if (nodes.size()!=0){
				Iterator i;
				for (i=nodes.listIterator();i.hasNext();){
					ElementNode n=(ElementNode)i.next();
					n.print();
				}
			}else{
				System.out.println(value);
			}
			System.out.println("</"+type+">"); 

		}

	}

	/* This is the parser part */

	final public void startElement 
	( final String namespace, final String localname,  final String type, final org.xml.sax.Attributes attributes ) 
		throws org.xml.sax.SAXException 
	{
		String s=new String( type );
		/* Add a node, set as current node*/
		if (current==null) {
			root=new ElementNode("XML",null);
			current=root;
		}
		ElementNode n=new ElementNode(s,current);
		current.nodes.add(n);
		current=n;
	}

	final public void endElement 
	( final String namespace, final String localname,  final String type ) 
		throws org.xml.sax.SAXException 
	{
		/* End a node, use parent as current node */
		if (current!=null) {
			current=current.parent;
		}
	}

	final public void characters 
	( final char[] ch, final int start, final int len )  
	{
		final String text = new String( ch, start, len ); 
		final String text1 = text.trim();
		if( text1.length() > 0 ) {
			if (current!=null) {
				current.value=text1;
			}
		}
	}
}

New Paste


Do not write anything in this field if you're a human.

Go to most recent paste.