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

互联网 17-4-26
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:200  Date:2008-11-07  Title:Exchange rates for 2008-11-07  Rates:      Code:EUR - Rate:1.0      Code:USD - Rate:1.275600

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

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:分享一个jscript与vbscript操作XML元素属性的方法

相关资讯