⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saxdemo.java

📁 全面的展示了SAX解析XML文件的强大威力
💻 JAVA
字号:
/*
 * Created on 2005-11-20
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.AttributeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class SAXDemo extends org.xml.sax.HandlerBase{

	/** The main method sets things up for parsing */
	  public static void main(String[] args) throws IOException, SAXException,
	      ParserConfigurationException {
	  	String s="web.xml";
	    // Create a JAXP "parser factory" for creating SAX parsers
	    javax.xml.parsers.SAXParserFactory spf = SAXParserFactory.newInstance();

	    // Configure the parser factory for the type of parsers we require
	    spf.setValidating(false); // No validation required

	    // Now use the parser factory to create a SAXParser object
	    // Note that SAXParser is a JAXP class, not a SAX class
	    javax.xml.parsers.SAXParser sp = spf.newSAXParser();

	    // Create a SAX input source for the file argument
	    org.xml.sax.InputSource input = new InputSource(new FileReader(s));

	    // Give the InputSource an absolute URL for the file, so that
	    // it can resolve relative URLs in a <!DOCTYPE> declaration, e.g.
	    input.setSystemId("file://" + new File(s).getAbsolutePath());

	    // Create an instance of this class; it defines all the handler methods
	    SAXDemo handler = new SAXDemo();

	    // Finally, tell the parser to parse the input and notify the handler
	    sp.parse(input, handler);

	    // Instead of using the SAXParser.parse() method, which is part of the
	    // JAXP API, we could also use the SAX1 API directly. Note the
	    // difference between the JAXP class javax.xml.parsers.SAXParser and
	    // the SAX1 class org.xml.sax.Parser
	    //
	    // org.xml.sax.Parser parser = sp.getParser(); // Get the SAX parser
	    // parser.setDocumentHandler(handler); // Set main handler
	    // parser.setErrorHandler(handler); // Set error handler
	    // parser.parse(input); // Parse!
	  }

	  StringBuffer accumulator = new StringBuffer(); // Accumulate parsed text

	  String servletName; // The name of the servlet

	  String servletClass; // The class name of the servlet

	  String servletId; // Value of id attribute of <servlet> tag

	  // When the parser encounters plain text (not XML elements), it calls
	  // this method, which accumulates them in a string buffer
	  public void characters(char[] buffer, int start, int length) {
	    accumulator.append(buffer, start, length);
	  }

	  // Every time the parser encounters the beginning of a new element, it
	  // calls this method, which resets the string buffer
	  public void startElement(String name, AttributeList attributes) {
	    accumulator.setLength(0); // Ready to accumulate new text
	    // If its a servlet tag, look for id attribute
	    if (name.equals("servlet"))
	      servletId = attributes.getValue("id");
	  }

	  // When the parser encounters the end of an element, it calls this method
	  public void endElement(String name) {
	    if (name.equals("servlet-name")) {
	      // After </servlet-name>, we know the servlet name saved up
	      servletName = accumulator.toString().trim();
	    } else if (name.equals("servlet-class")) {
	      // After </servlet-class>, we've got the class name accumulated
	      servletClass = accumulator.toString().trim();
	    } else if (name.equals("servlet")) {
	      // Assuming the document is valid, then when we parse </servlet>,
	      // we know we've got a servlet name and class name to print out
	      System.out.println("Servlet " + servletName
	          + ((servletId != null) ? " (id=" + servletId + ")" : "")
	          + ": " + servletClass);
	    }
	  }

	  /** This method is called when warnings occur */
	  public void warning(SAXParseException exception) {
	    System.err.println("WARNING: line " + exception.getLineNumber() + ": "
	        + exception.getMessage());
	  }

	  /** This method is called when errors occur */
	  public void error(SAXParseException exception) {
	    System.err.println("ERROR: line " + exception.getLineNumber() + ": "
	        + exception.getMessage());
	  }

	  /** This method is called when non-recoverable errors occur. */
	  public void fatalError(SAXParseException exception) throws SAXException {
	    System.err.println("FATAL: line " + exception.getLineNumber() + ": "
	        + exception.getMessage());
	    throw (exception);
	  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -