java使用SAX解析xml的代码实例

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 currencies = new LinkedList();    }     @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文件:

    2008-11-07    Exchange rates for 2008-11-07                        EUR            1.220                            USD            1.275            

输出:

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

以上就是java使用SAX解析xml的代码实例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1429032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 02:09:55
下一篇 2025年12月15日 10:30:09

相关推荐

发表回复

登录后才能评论
关注微信