import org.xml.sax.*; import org.xml.sax.helpers.*; // DefaultHandler, XMLReaderFactory import org.apache.xml.serialize.*; // OutputFormat, XMLSerializer import java.io.*; // Für das FileHandling public class SaxBeispiel extends DefaultHandler { private XMLSerializer out; private boolean printChars = false; public SaxBeispiel(XMLSerializer out) { super(); // Würde auch automatisch erfolgen lächelnd this.out = out; } /** * @param args the command line arguments */ public static void main(String[] args) throws SAXException, IOException { String XMLInputFile = "handy.xml"; XMLReader xmlReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); OutputFormat format = new OutputFormat("text", "utf-8", true); XMLSerializer serial = new XMLSerializer(format); SaxBeispiel handler = new SaxBeispiel(serial); // ein Objekt dieser Klasse erzeugen ... xmlReader.setContentHandler(handler); // ... und sie als Hanlder für Inhalt ... xmlReader.setErrorHandler(handler); // ... und Fehler festlegen xmlReader.parse(new InputSource( new FileReader(XMLInputFile))); // Parser starten } /* Diese Methode wird nach Abarbeiten eines StartTags * eines jeden Elements aufgerufen */ public void startElement( String nsURI, String localName, String rawName, Attributes atts) throws SAXException{ if(rawName.equals("Hersteller")) { System.out.println("Hersteller: " + atts.getValue("name")); } else if(rawName.equals("Modell")) { System.out.println("Modell: " + atts.getValue("name")); } else if(rawName.equals("Gewicht")) { System.out.print("Gewicht: "); printChars= true; } } /* Ein End-Tag wurde gefunden */ public void endElement(String nsURI, String localName, String rawName) throws SAXException{ if (rawName.equals("Hersteller")) { System.out.println("------------"); } } /* Ein Text (keine Tags) wurde gefunden */ public void characters(char ch[], int start, int length) throws SAXException{ if (printChars) { System.out.println(new String(ch,start,length)); printChars= false; } } }