这个例子展示了如何用SAX接口来解析XML文档
下面是我要解析的文档emp.xml
<?xml version="1.0"?>
<employs>
<employ>
<name>aaa</name>
<age>33</age>
<sex>m</sex>
<tel>88881234</tel>
<img>1.jpg</img>
</employ>
<employ>
<name>bbb</name>
<age>35</age>
<sex>m</sex>
<tel>88882345</tel>
<img>2.jpg</img>
</employ>
<employ>
<name>ccc</name>
<age>24</age>
<sex>f</sex>
<tel>888845657</tel>
<img>3.jpg</img>
</employ>
<employs>
我使用的开发环境是Jbuilder5,下面就是java程序
import java.io.IOException;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.apache.xerces.parsers.SAXParser;
import java.util.Stack;
public class XmlToHtml extends DefaultHandler {
String strName;
String strAge;
String strSex;
String strTel;
String strImage;
private Stack stackName=new Stack();
private Stack stackAge=new Stack();
private Stack stackSex=new Stack();
private Stack stackTel=new Stack();
private Stack stackImage=new Stack();
private int flag;
public static void main(String[] argv) {
if (argv.length != 1) {
System.out.println("Usage: java XmlToHtml [URI]");
System.exit(0);
}
String uri = argv[0];
try {
XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
XmlToHtml XmlToHtmlInstance = new XmlToHtml();
parser.setContentHandler(XmlToHtmlInstance);
parser.parse(uri);
}
catch(IOException ioe) {
ioe.printStackTrace();
}
catch(SAXException saxe) {
saxe.printStackTrace();
}
}
public void characters(char[] ch, int start, int length) throws SAXException {
String s = new String(ch, start, length);
if (ch[0] == '\n')
return;
if(flag==1)
{stackName.push(s);}
else if(flag==2)
{stackAge.push(s);}
else if(flag==3)
{stackSex.push(s);}
else if(flag==4)
{stackTel.push(s);}
else if(flag==5)
{stackImage.push(s);}
}
public void endDocument() throws SAXException {
for (int count=stackName.size()-1;count>=0;count--){
String strName=stackName.elementAt(count).toString();
String strAge=stackAge.elementAt(count).toString();
String strSex=stackSex.elementAt(count).toString();
String strTel=stackTel.elementAt(count).toString();
String strImage=stackImage.elementAt(count).toString();
System.out.println(strName+" "+strAge+" "+strSex+" "+strTel+" "+strImage+"");
//输出解析后的数据
}
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(localName.equals("name" ))
{flag=1;}
else if (localName.equals("age"))
{flag=2;}
else if(localName.equals("sex"))
{flag=3;}
else if(localName.equals("tel"))
{flag=4;}
else if(localName.equals("img"))
{flag=5;}
}
}