XML解析有不少種方法,上次寫了一個DOM的解析,此次寫一個SAX解析,他們的優缺點在後面的總結中寫!java
別的先不說,先上代碼!ide
XML:code
<?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX縣XX鎮XX路X段XX號</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX鄉XX村XX組</ADDR> </VALUE> </RESULT>
java:xml
package www.yq.com.src; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Stack; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; /** * @Project XMLSimpleTest * @File MyXmlReader.java * @Package www.yq.com.src * @Date 2016年1月25日 下午4:34:38 * @Author * @email */ public class MyXmlReader extends DefaultHandler{ Stack tags = new Stack(); public static void main(String[] args) { File f = new File("E:\\qi.xml"); SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); SAXParser parser; try { parser = saxParserFactory.newSAXParser(); MyXmlReader handler = new MyXmlReader(); parser.parse(f, handler); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); String tag = (String) tags.peek(); if(tag.equals("NO")){ System.out.println("--------------"); System.out.println("車牌號:"+new String(ch,start,length)); } if(tag.equals("ADDR")){ System.out.println("--------------"); System.out.println("車牌地址:"+ new String(ch, start, length)); } } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); tags.push(qName); } }
運行結果:io