import java.io.File;import java.util.LinkedList;import java.util.List; import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler; public class ParseXMLFileWithSAX extends DefaultHandler { private StringBuffer buffer = new StringBuffer();     private static String responseCode;    private static String date;    private static String title;     private static Currency currency;    private static Rates rates;     public static void main(String[] args) throws Exception {         DefaultHandler handler = new ParseXMLFileWithSAX();         SAXParserFactory factory = SAXParserFactory.newInstance();        factory.setValidating(false);         SAXParser parser = factory.newSAXParser();         parser.parse(new File("in.xml"), handler);         System.out.println("Response Code:" + responseCode);        System.out.println("Date:" + date);        System.out.println("Title:" + title);        System.out.println("Rates:");         for (Currency curr : rates.currencies) {            System.out.println("\tCode:" + curr.code + " - Rate:" + curr.rate);        }     }     private static class Currency {        public String code;        public String rate;    }     private static class Rates {        public List<Currency> currencies = new LinkedList<Currency>();    }     @Override    public void startElement(String uri, String localName, String qName,            Attributes attributes) throws SAXException {         buffer.setLength(0);         if (qName.equals("response")) {            responseCode = attributes.getValue("code");        }        else if (qName.equals("date")) {            date = "";        }        else if (qName.equals("title")) {            title = "";        }        else if (qName.equals("rates")) {            rates = new Rates();        }        else if (qName.equals("currency")) {            currency = new Currency();        }     }     @Override    public void endElement(String uri, String localName, String qName)throws SAXException {         if (qName.equals("date")) {            date = buffer.toString();        }        else if (qName.equals("title")) {            title = buffer.toString();        }        else if (qName.equals("currency")) {            rates.currencies.add(currency);        }        else if (qName.equals("code")) {            currency.code = buffer.toString();        }        else if (qName.equals("rate")) {            currency.rate = buffer.toString();        }     }     public void characters(char[] ch, int start, int length) {        buffer.append(ch, start, length);    } }

输入xml文件:

<?xml version="1.0" encoding="UTF-8" ?><response code="200">    <date>2008-11-07</date>    <title>Exchange rates for 2008-11-07</title>    <rates>        <currency>            <code>EUR</code>            <rate>1.220</rate>        </currency>        <currency>            <code>USD</code>            <rate>1.275</rate>        </currency>    </rates></response>

输出:

Response Code:200Date:2008-11-07Title:Exchange rates for 2008-11-07Rates:    Code:EUR - Rate:1.0    Code:USD - Rate:1.275600

更多相关文章

  1. src下xml等资源文件无法读取的问题在IDEA中如何解决
  2. 调用API生成RSS资源文件的实例详解
  3. 布局文件如何使用?总结布局文件实例用法
  4. 总结关于文件记录操作实例教程
  5. xml文件用什么软件打开
  6. 四种使用dom4j读取xml文件的方式
  7. 用 NodeJS 重命名系统文件[每日前端夜话0xB2]
  8. Linux学习:unix的标准化的实现(Linux中各种限制-数据类型-各种标准
  9. Linux学习:文件IO(不带缓冲区),原子操作概念

随机推荐

  1. android SQLite table book有4列,但提供了
  2. Android之DOM解析XML
  3. 【Android】仿斗鱼滑动验证码
  4. 你是哪个级别?(工程师级别划分)
  5. Android——播放器和图片轮播
  6. Android极光推送jPush混淆解决方案终极篇
  7. Android 漂亮的 Dialog (弹出框)
  8. Android添加一个回调监听接口
  9. Android代码性能优化技巧
  10. android的入门学习