【Java开源代码栏目提醒】:网学会员为广大网友收集整理了,XmlSaxDemo.java,希望对大家有所帮助!
package ch6.xml;
import org.apache.xerces.parsers.*;
import org.xml.sax.*;
/**
* XmlSaxDemo.java 本例分析主何用SAX解析器来处理XML文档
*
*/
public class XmlSaxDemo extends HandlerBase {
public void parseURI(String uri) {
SAXParser parser = new SAXParser();
parser.setDocumentHandler(this);
parser.setErrorHandler(this);
try {
parser.parse(uri);
} catch (Exception e) {
System.err.println(e);
}
}
/** 处理指令. */
public void processingInstruction(String target, String data) {
System.out.print("<?");
System.out.print(target);
if (data != null && data.length() > 0) {
System.out.print(' ');
System.out.print(data);
}
System.out.print("?>");
}
/** 开始部分描述. */
public void startDocument() {
System.out.println("<?xml version=\"1.0\"?>");
}
/** 开始元素. */
public void startElement(String name, AttributeList attrs) {
System.out.print("<");
System.out.print(name);
if (attrs != null) {
int len = attrs.getLength();
for (int i = 0; i < len; i++) {
System.out.print(" ");
System.out.print(attrs.getName(i));
System.out.print("=\"");
System.out.print(attrs.getValue(i));
System.out.print("\"");
}
}
System.out.print(">");
}
/** 字符. */
public void characters(char ch[], int start, int length) {
System.out.print(new String(ch, start, length));
}
/** 忽略空格. */
public void ignorableWhitespace(char ch[], int start, int length) {
characters(ch, start, length);
}
/** 元素结尾. */
public void endElement(String name) {
System.out.print("</");
System.out.print(name);
System.out.print(">");
}
/**
文档结尾. */
public void endDocument() {
// No need to do anything.
}
//
// ErrorHandler 方法
//
/** 警告. */
public void warning(SAXParseException ex) {
System.err.println("[Warning] " + getLocationString(ex) + ": "
+ ex.getMessage());
}
/** 错误. */
public void error(SAXParseException ex) {
System.err.println("[Error] " + getLocationString(ex) + ": "
+ ex.getMessage());
}
/** 严重错误. */
public void fatalError(SAXParseException ex) throws SAXException {
System.err.println("[Fatal Error] " + getLocationString(ex) + ": "
+ ex.getMessage());
throw ex;
}
/** 从当前位置返回一个字符串. */
private String getLocationString(SAXParseException ex) {
StringBuffer str = new StringBuffer();
String systemId = ex.getSystemId();
if (systemId != null) {
int index = systemId.lastIndexOf('/');
if (index != -1) {
systemId = systemId.substring(index + 1);
}
str.append(systemId);
}
str.append(':');
str.append(ex.getLineNumber());
str.append(':');
str.append(ex.getColumnNumber());
return str.toString();
}
/** 主方法. */
public static void main(String argv[]) {
if (argv.length == 0) {
System.out.println("用法: java 程序应用");
System.out.println(" 输入
Java程序的文件地址和所要解析的XML
文档.");
System.out.println(" 例如: java XmlDomDemo XmlDemoon.
xml");
argv = new String[1];
argv[0] = "src\\ch6\\xml\\XmlDemoone.xml";
}
XmlSaxDemo s1 = new XmlSaxDemo();
s1.parseURI(argv[0]);
}
}