zoukankan      html  css  js  c++  java
  • Java 内置的读取XML方法

    URL url = new URL(urlString);
    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser parser = factory.newSAXParser();
    XMLReader xmlReader = parser.getXMLReader();
    //RssHandler:XML 节点读取方式实现 RssHandler rssHandler
    = new RssHandler(); xmlReader.setContentHandler(rssHandler); InputSource inputSource = new InputSource(url.openStream()); xmlReader.parse(inputSource); return rssHandler.getRssFeed();

     RssHandler 帮助类

    public class RssHandler extends DefaultHandler {
        //多个Item集合
        RSSFeed rssFeed ;
        //单个Item实例
        RssItem rssItem; 
        CurrentState currentState = CurrentState.None;
        
        public RssHandler(){}
        
        public RSSFeed getRssFeed(){
            return this.rssFeed;
        }
        
        public void startDocument()throws SAXException {
            this.rssFeed = new RSSFeed();
            this.rssItem = new RssItem();
        }
        
        public void startElement(String _URI,String localName,String qNameString,Attributes atts)throws SAXException 
        {
            if(localName.equals("channel")){
                currentState = CurrentState.None; 
            }
            else if(localName.equals("item")){
                this.rssItem = new RssItem(); 
            }
            else if(localName.equals("title")){
                currentState = CurrentState.TITLE; 
            }
            else if(localName.equals("description")){
                currentState = CurrentState.DESCRIPTION; 
            }
            else if(localName.equals("link")){
                currentState = CurrentState.LINK; 
            }
            else if(localName.equals("category")){
                currentState = CurrentState.CATEGORY; 
            }
            else if(localName.equals("pubDate")){
                currentState = CurrentState.PUBDATE; 
            } 
        }
        
        public void endElement(String _URI,String localName,String qName)throws SAXException
        {
            if(localName.equals("item")){
                this.rssFeed.addItem(this.rssItem);
            }
        }
        
        public void characters(char ch[],int start,int length)
        {
            String theString = new String(ch,start,length);
            switch (currentState) {
            case TITLE:
                this.rssItem.title(theString);
                currentState = CurrentState.None;
                break;
            case LINK:
                this.rssItem.link(theString);
                currentState = CurrentState.None;
                break;
            case DESCRIPTION:
                this.rssItem.description(theString);
                currentState = CurrentState.None;
                break;
            case CATEGORY:
                this.rssItem.category(theString);
                currentState = CurrentState.None;
                break;
            case PUBDATE:
                this.rssItem.publicDate(theString);
                currentState = CurrentState.None;
                break; 
            default:
                break;
            }
        } 
        /*
         * 节点枚举
         */
         public enum CurrentState{
            /*
             * 无
             */
            None,
            TITLE,
            LINK,
            DESCRIPTION,
            CATEGORY,
            PUBDATE 
        }
    } 
  • 相关阅读:
    python递归 及 面向对象初识及编程思想
    python匿名函数 与 内置函数
    python迭代器与生成器(二)
    linux---常用命令(二)
    linux---常用命令(一)
    Linux CentOS服务启动
    常见HTTP状态码
    oncontextmenu
    javascript之with的使用 弊端
    js的with语句使用方法
  • 原文地址:https://www.cnblogs.com/you000/p/2797514.html
Copyright © 2011-2022 走看看