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

📄 saxprinter.java

📁 nanjing university cs 的java课件。 对新手很有用。付课件中源码。
💻 JAVA
字号:
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.util.StringTokenizer;

public class SAXPrinter {
	public static void main(String[] args) {
		String filename;
		if (args.length > 0) {
			filename = args[0];
		}
		else {
			filename = "test.xml";
		}
		printOutline(filename);
	}

	public static void printOutline(String filename) {
		DefaultHandler handler = new PrintHandler();
		SAXParserFactory factory = SAXParserFactory.newInstance();
		try {
			SAXParser parser = factory.newSAXParser();
			parser.parse(filename, handler);
		}
		catch (Exception e) {
			String errorMessage =
				"Error parsing " + filename + ": " + e;
			System.err.println(errorMessage);
			e.printStackTrace();
		}
	}
}

class PrintHandler
	extends DefaultHandler {
	private int indentation = 0;

	/** When you see a start tag, print it out and then
	 * increase indentation by two spaces. If the
	 * element has attributes, place them in parens
	 * after the element name.
	 */
	public void startElement(String namespaceUri, String localName,
				String qualifiedName, Attributes attributes) throws SAXException {
		indent(indentation);
		System.out.print("Start tag: " + qualifiedName);
		int numAttributes = attributes.getLength();
		// For <someTag> just print out "someTag". But for
		// <someTag att1="Val1" att2="Val2">, print out
		// "someTag (att1=Val1, att2=Val2).
		if (numAttributes > 0) {
			System.out.print(" (");
			for (int i = 0; i < numAttributes; i++) {
				if (i > 0) {
					System.out.print(", ");
				}
				System.out.print(attributes.getQName(i) + "=" +
								 attributes.getValue(i));
			}
			System.out.print(")");
		}
		System.out.println();
		indentation = indentation + 2;
	}

	/** When you see the end tag, print it out and decrease
	 * indentation level by 2.
	 */
	public void endElement(String namespaceUri, String localName,
				String qualifiedName) throws SAXException {
		indentation = indentation - 2;
		indent(indentation);
		System.out.println("End tag: " + qualifiedName);
	}

	private void indent(int indentation) {
		for (int i = 0; i < indentation; i++) {
			System.out.print(" ");
		}
	}

	/** Print out the first word of each tag body. */
	public void characters(char[] chars,
						   int startIndex,
						   int length) {
		String data = new String(chars, startIndex, length);
		// Whitespace makes up default StringTokenizer delimeters
		StringTokenizer tok = new StringTokenizer(data);
		if (tok.hasMoreTokens()) {
			indent(indentation);
			System.out.print(tok.nextToken());
			if (tok.hasMoreTokens()) {
				System.out.println("...");
			}
			else {
				System.out.println();
			}
		}
	}
}

⌨️ 快捷键说明

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