| | |
XML
Please support our XML, XSLT and XPATH advertiser: Programming Forums - DaniWeb Sister Site
![]() |
0
#3 Nov 5th, 2009
To use SAX, you must implement the interface org.xml.sax.ContentHAndler. Typically you accomplish this by exending org.xml.sax.DefaultHAndler class because it provides default implementations for all the callbacks in the SAX handler classes. Then you override the methods of the interface and specify which action will be taken as the various parts of the XML document are encountered.
xml Syntax (Toggle Plain Text)
<?xml version="1.0" standalone="yes"?> <person> <name>Rajesh</name> <phone type="home">1229999</phone> <email>rajesh@yahoo.co.in</email> </person>
java Syntax (Toggle Plain Text)
import java.io.IOException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.XMLReader; public class SAXDump { static public void main(String[] arg) { String filename = null; if (arg.length == 1) { filename = arg[0]; } else { usage(); } // Create a new factory that will create the parser. SAXParserFactory spf = SAXParserFactory.newInstance(); // Create the XMLReader to be used to parse the document. XMLReader reader = null; try { SAXParser parser = spf.newSAXParser(); reader = parser.getXMLReader(); } catch (Exception e) { System.err.println(e); System.exit(1); } // Specify the error handler and the content handler. reader.setErrorHandler(new MyErrorHandler()); reader.setContentHandler(new MyContentHandler()); // Use the XMLReader to parse the entire file. try { InputSource is = new InputSource(filename); reader.parse(is); } catch (SAXException e) { System.exit(1); } catch (IOException e) { System.err.println(e); System.exit(1); } } private static void usage() { System.err.println("Usage: SAXDump <filename>"); System.exit(1); } } class MyContentHandler implements ContentHandler { private Locator locator; /** * The name and of the SAX document and the current location within the * document. */ public void setDocumentLocator(Locator locator) { this.locator = locator; System.out.println("-" + locator.getLineNumber() + "---Document ID: " + locator.getSystemId()); } /** The parsing of a document has started.. */ public void startDocument() { System.out.println("-" + locator.getLineNumber() + "---Document parse started"); } /** The parsing of a document has completed.. */ public void endDocument() { System.out.println("-" + locator.getLineNumber() + "---Document parse ended"); } /** The start of a namespace scope */ public void startPrefixMapping(String prefix, String uri) { System.out.println("-" + locator.getLineNumber() + "---Namespace scope begins"); System.out.println(" " + prefix + "=\"" + uri + "\""); } /** The end of a namespace scope */ public void endPrefixMapping(String prefix) { System.out.println("-" + locator.getLineNumber() + "---Namespace scope ends"); System.out.println(" " + prefix); } /** The opening tag of an element. */ public void startElement(String namespaceURI, String localName, String qName, Attributes atts) { System.out.println("-" + locator.getLineNumber() + "---Opening tag of an element"); System.out.println(" Namespace: " + namespaceURI); System.out.println(" Local name: " + localName); System.out.println(" Qualified name: " + qName); for (int i = 0; i < atts.getLength(); i++) { System.out.println(" Attribute: " + atts.getQName(i) + "=\"" + atts.getValue(i) + "\""); } } /** The closing tag of an element. */ public void endElement(String namespaceURI, String localName, String qName) { System.out.println("-" + locator.getLineNumber() + "---Closing tag of an element"); System.out.println(" Namespace: " + namespaceURI); System.out.println(" Local name: " + localName); System.out.println(" Qualified name: " + qName); } /** Character data. */ public void characters(char[] ch, int start, int length) { System.out.println("-" + locator.getLineNumber() + "---Character data"); showCharacters(ch, start, length); } /** Ignorable whitespace character data. */ public void ignorableWhitespace(char[] ch, int start, int length) { System.out.println("-" + locator.getLineNumber() + "---Whitespace"); showCharacters(ch, start, length); } /** Processing Instruction */ public void processingInstruction(String target, String data) { System.out.println("-" + locator.getLineNumber() + "---Processing Instruction"); System.out.println(" Target: " + target); System.out.println(" Data: " + data); } /** A skipped entity. */ public void skippedEntity(String name) { System.out.println("-" + locator.getLineNumber() + "---Skipped Entity"); System.out.println(" Name: " + name); } /** * Internal method to format arrays of characters so the special whitespace * characters will show. */ public void showCharacters(char[] ch, int start, int length) { System.out.print(" \""); for (int i = start; i < start + length; i++) switch (ch[i]) { case '\n': System.out.print("\\n"); break; case '\r': System.out.print("\\r"); break; case '\t': System.out.print("\\t"); break; default: System.out.print(ch[i]); break; } System.out.println("\""); } } class MyErrorHandler implements ErrorHandler { public void warning(SAXParseException e) throws SAXException { show("Warning", e); throw (e); } public void error(SAXParseException e) throws SAXException { show("Error", e); throw (e); } public void fatalError(SAXParseException e) throws SAXException { show("Fatal Error", e); throw (e); } private void show(String type, SAXParseException e) { System.out.println(type + ": " + e.getMessage()); System.out.println("Line " + e.getLineNumber() + " Column " + e.getColumnNumber()); System.out.println("System ID: " + e.getSystemId()); } }
0
#4 8 Days Ago
Thanks a lot well done explanation..
http://www.servicecycle.com - Open source content management, open source outsourcing, tutorials, examples, choosing the correct open source tool, how to outsource software development
![]() |
Similar Threads
- swap xml nodes (RSS, Web Services and SOAP)
- Need Help TXT to XML Converter (VB.NET)
- complications with XML serialization (C#)
- News Story: Revised XML specifications from W3C (XML, XSLT and XPATH)
Other Threads in the XML, XSLT and XPATH Forum
- Previous Thread: Help with xsl:collection
- Next Thread: XML to Linq returning Length? - Newbie!
Views: 1039 | Replies: 3
| Thread Tools | Search this Thread |
Tag cloud for java
.net advice ajax api apple applet apps arguments array automation awt bi binary browser c++ calculator class classes click code component convert csv design development draw eclipse ee error event exception firefox fractal game givemetehcodez google grails gui gwt html image input integer java javafx javascript jetbrains jmf jsp jtable julia jvm lego linux loan loop machine method microsoft mysql netbeans newbie object online osx panel php problem programmer programming project projectideas python reference return screen security sell set socket software solaris sort source string sun swing tcp terminal test threads time title transfer tree trolltech ui web webservices windows







