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 
        }
    } 
  • 相关阅读:
    【转并修改】VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试
    ASP.NET MVC4 UEditor 的上传图片配置路径
    转:Java图形化界面设计——布局管理器之FlowLayout(流式布局)其他请参考转载出处网址
    转载:win7JDK环境配置
    转载:java保留2位小数
    转载:遍历Map的四种方法
    架构模式: 远程过程调用
    架构模式: 外部配置化
    架构模式: 微服务的基底
    架构模式: 服务部署平台
  • 原文地址:https://www.cnblogs.com/you000/p/2797514.html
Copyright © 2011-2022 走看看