第一个文件:SAXHandler.java
功能:SAX事件解析
import java.util.Hashtable;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXHandler extends DefaultHandler
{
private Hashtable table = new Hashtable();
private String currentElement = null;
private String currentValue = null;
public void setTable(Hashtable table)
{
this.table = table;
}
public Hashtable getTable()
{
return table;
}
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException
{
currentElement = qName;
}
public void characters(char[] ch, int start, int length)
throws SAXException
{
currentValue = new String(ch, start, length);
}
public void endElement(String uri, String localName, String qName)
throws SAXException
{
if (currentElement.equals(qName))
table.put(currentElement, currentValue);
}
}
第二个文件:SAXHandlerTest.java
功能:XML文件解析示例
import java.util.Hashtable;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class SAXHandlerTest {
public static void main(String[] args) {
String file = "c://people.xml";
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = null;
try {
sp = spf.newSAXParser();
}
catch (Exception ex) {
ex.printStackTrace();
}
SAXHandler handler = new SAXHandler();
try {
sp.parse(file, handler);
}
catch (Exception ex) {
ex.printStackTrace();
}
Hashtable hashTable = handler.getTable();
System.out.println("<TABLE BORDER=2><CAPTION>教师信息表</CAPTION>");
System.out.println("<TR><TD>姓名</TD>" + "<TD>" +
(String)hashTable.get(new String("name")) + "</TD></TR>");
System.out.println("<TR><TD>学院</TD>" + "<TD>" +
(String)hashTable.get(new String("college"))+"</TD></TR>");
System.out.println("<TR><TD>电话</TD>" + "<TD>" +
(String)hashTable.get(new String("telephone")) + "</TD></TR>");
System.out.println("<TR><TD>备注</TD>" + "<TD>" +
(String)hashTable.get(new String("notes")) + "</TD></TR>");
System.out.println("</TABLE>");
}
}
第三个文件:people.xml
功能:例子XML文件
<?xml version="1.0" encoding="gb2312"?>
<person>
<name>王小明</name>
<college>信息学院</college>
<telephone>6258113</telephone>
<notes>男,1955年生,博士,95年调入海南大学</notes>
</person>