SAX die ersten Schritte

Xenon

Mitglied
Hallo Forum!

ich habe folgenden code zusammengereimt, nun ist meine Frage was ist der Unterschied zw. dem DefaultHandler und dem HandlerBase?
Wenn ich mich für DefaultHaendler entschieden habe was muss ich als Parameter ihm übergeben? Sorry bin ein newbie...

Java:
import java.io.IOException;

import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.*;

public class test{
	public static void main(String[] args){
		test myTest=new test();
		
	}
	
	public void parseIt(String file) throws SAXException, IOException{
		SAXParser parser = null;
		DefaultHandler dh = null;
		parser.parse("/test.xml", dh);
	}
}
 
was ist der Unterschied zw. dem DefaultHandler und dem HandlerBase?

>>
DefaultHandler: This class replaces the deprecated SAX1 HandlerBase class
HandlerBase: Deprecated. This class works with the deprecated DocumentHandler interface. It has been replaced by the SAX2 DefaultHandler class.
<<
 
Danke für die Vorschläge!
so, jetzt habe ich was zusammengetragen
Java:
<AA>
        <bla></bla>
        <bla></bla>
</AA>
<BB>
        <bla></bla>
        <bla></bla>
        <bla></bla>
</BB>
<partId>
                    <A>WS</A>
                    <id>001</id>
                    <mV>004</mV>
                    <sV>000</sV>
                    <pV>001</pV>
</partId>
<partId>
                    <A>VB</A>
                    <id>001</id>
                    <mV>003</mV>
                    <sV>001</sV>
                    <pV>002</pV>
</partId>
<CC>
        <bla></bla>
        <bla></bla>
        <bla></bla>
</CC>

mit dem unteren code kann ich alle Werte aller Tags finden und die Werte ausgeben. Was jedoch nicht funktioniert bzw. fehlt ist folgendes.
Das programm soll nur die Werte zw. partId ausgeben. Momentan wird alles augegeben auch AA, BB und CC. Danke!

Java:
import java.io.FileReader;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;


	
public class MySAXApp extends DefaultHandler
{

	
	 public void startDocument ()
	    {
		System.out.println("Start document");
	    }

	  public void endDocument ()
	    {
		System.out.println("End document");
	    }
	  

	    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                   System.out.println("start element    : " + qName);
                   if (qName.startsWith("partId")){System.out.println("PartId gefunden");}
	        }
	    
	    public void characters(char ch[], int start, int length)
	    throws SAXException {
	    	String a =new String(ch, start, length);
	   
	        System.out.println("start characters : " +a);
	    }
	    public void endElement(String uri, String localName, String qName)
	    throws SAXException {
	    	
	        System.out.println("end element      : " + qName);
	    }




	    public static void main (String args[])
		throws Exception
	    {
		XMLReader xr = XMLReaderFactory.createXMLReader();
		MySAXApp handler = new MySAXApp();
		xr.setContentHandler(handler);
		FileReader r = new FileReader("C:\\test.xml");
		xr.parse(new InputSource(r));
	    }


}
 
Mach ein boolean das du auf true setzt wenn gelesen werden soll in der characters Methode.
Also eine Art Schalter für den Lesemodus der nur bei bestimmten Starttags aktiviert wird.
 

Zurück
Oben