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 
        }
    } 
  • 相关阅读:
    从零开始入门 K8s | 应用编排与管理
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    203. Remove Linked List Elements
    183. Customers Who Never Order
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    1261. Find Elements in a Contaminated Binary Tree
    1260. Shift 2D Grid
  • 原文地址:https://www.cnblogs.com/you000/p/2797514.html
Copyright © 2011-2022 走看看