zoukankan      html  css  js  c++  java
  • SAXpraseHelper

    package com.k1.frame.utils;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.DefaultHandler;
    
    import com.k1.frame.data.Contents;
    import com.k1.frame.data.NavigationItems;
    import com.k1.frame.data.Navigations;
    import com.k1.frame.data.PageInfo;
    import com.k1.frame.data.TabbarItems;
    import com.k1.frame.data.Tabbars;
    
    import android.content.Context;
    
    public class SAXPraserHelper extends DefaultHandler {
    
        final int SAX_PAGE = 0;
        final int SAX_TITLE = 1;
        final int SAX_COLOR = 2;
        final int SAX_TABBAR = 3;
    
        final int TITLE_BACKGROUND = 4;
        final int TITLE_LEFT_IMAGE = 5;
        final int TITLE_LEFT_TEXT = 6;
        final int TITLE_SEARCH_IMAGE = 7;
        final int TITLE_LEFT_TEXT_SIZE = 8;
        final int TITLE_LEFT_COLOR = 9;
        final int TITLE_TEXT_SIZE = 10;
        final int TITLE_TEXT_COLOR = 11;
        final int TITLE_HEIGHT = 12;
    
        final int TABS_BACKGROUD = 13;
        final int TABS_PADDINGTOP = 14;
        final int TABS_PADDINGBOTTOM = 15;
    
        final int TABS_TAB_TYPE = 16;
        final int TABS_TAB_FILE = 17;
        final int TABS_TAB_ICON = 18;
        final int TABS_TAB_NAME = 19;
        final int TABS_TAB_COLOR = 20;
        final int TABS_TAB_SELECT_COLOR = 21;
        final int TABS_TAB_TEXT_COLOR = 22;
        final int TABS_TAB_TEXT_COLOR_SELECT = 23;
        final int TABS_TAB_TEXT_SIZE = 24;
        final int TABS_TAB_INCO_SELECT = 25;
        final int TABS_TAB_HTML = 26;
    
        public Navigations navigation = new Navigations();
        public Contents content = new Contents();
        public Tabbars tab = new Tabbars();
        public NavigationItems item = new NavigationItems();
    
        public NavigationItems mavigationItems = new NavigationItems();
        public TabbarItems tabItems = new TabbarItems();
        PageInfo pageinfo = new PageInfo();
        int currentState = 0;
    
        /*
         * 接口字符块通知
         */
        @Override
        public void characters(char[] ch, int start, int length) throws SAXException {
    
            // TODO Auto-generated method stub
            // super.characters(ch, start, length);
            String theString = new String(ch, start, length);
            switch (currentState) {
            case TITLE_BACKGROUND:
                mavigationItems.setTitleBackground(theString);
                currentState = TITLE_BACKGROUND;
                break;
            case TITLE_LEFT_IMAGE:
                mavigationItems.setLeftImage(theString);
                currentState = TITLE_BACKGROUND;
                break;
            case TITLE_LEFT_COLOR:
                mavigationItems.setLeftTextColor(theString);
                currentState = 0;
                break;
            case TITLE_LEFT_TEXT:
                mavigationItems.setLeftText(theString);
                currentState = 0;
                break;
            case TITLE_SEARCH_IMAGE:
                mavigationItems.setSearchImage(theString);
                currentState = 0;
                break;
            case TITLE_TEXT_SIZE:
                mavigationItems.setTitleTextSize(theString);
                currentState = 0;
                break;
            case TITLE_TEXT_COLOR:
                mavigationItems.setTitleTextColor(theString);
                currentState = 0;
                break;
            case TITLE_LEFT_TEXT_SIZE:
                mavigationItems.setLeftTextSize(theString);
                currentState = 0;
                break;
            case TITLE_HEIGHT:
                mavigationItems.setTitleHeight(theString);
                currentState = 0;
                break;
            case TABS_BACKGROUD:
                tab.setBackground(theString);
                currentState = 0;
                break;
            case TABS_PADDINGTOP:
                tab.setPaddingTop(theString);
                currentState = 0;
                break;
            case TABS_PADDINGBOTTOM:
                tab.setPaddingBottom(theString);
                currentState = 0;
                break;
            case TABS_TAB_TYPE:
                tabItems.setType(theString);
                currentState = 0;
                break;
            case TABS_TAB_FILE:
                tabItems.setFile(theString);
                currentState = 0;
                break;
            case TABS_TAB_ICON:
                tabItems.setIcon(theString);
                currentState = 0;
                break;
            case TABS_TAB_NAME:
                tabItems.setName(theString);
                currentState = 0;
                break;
            case TABS_TAB_COLOR:
                tabItems.setColor(theString);
                currentState = 0;
                break;
            case TABS_TAB_SELECT_COLOR:
                tabItems.setSelectColor(theString);
    
                currentState = 0;
                break;
            case TABS_TAB_TEXT_COLOR:
                tabItems.setTextColor(theString);
                currentState = 0;
                break;
            case TABS_TAB_TEXT_COLOR_SELECT:
                tabItems.setTextColorSelect(theString);
                currentState = 0;
                break;
            case TABS_TAB_TEXT_SIZE:
                tabItems.setTextSize(theString);
                currentState = 0;
                break;
            case TABS_TAB_INCO_SELECT:
                tabItems.setIconSelect(theString);
                currentState = 0;
                break;
            case TABS_TAB_HTML:
                tabItems.setHtmlpage(theString);
                currentState = 0;
            default:
                return;
            }
        }
    
        public PageInfo getPageInfo() {
            pageinfo.setNavigation(navigation);
            pageinfo.setTab(tab);
            return pageinfo;
    
        }
    
        /*
         * 接收文档结束通知
         */
        @Override
        public void endDocument() throws SAXException {
            super.endDocument();
        }
    
        /*
         * 接收标签结束通知
         */
        @Override
        public void endElement(String uri, String localName, String qName) throws SAXException {
    
            if (localName.equals("title")) {
                navigation.setItems(mavigationItems);
                Object O = mavigationItems.getTitleHeight();
                System.out.println(O);
    
            }
    
            if (localName.equals("tab")) {
                String s = tabItems.getHtmlpage();
                System.out.println(s);
                tab.setItem(tabItems);
                tabItems = new TabbarItems();
            }
        }
    
        /*
         * 文档开始通知
         */
        @Override
        public void startDocument() throws SAXException {
    
        }
    
        /*
         * 标签开始通知
         */
        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
            if (localName.equals("title_backgroud")) {
                currentState = TITLE_BACKGROUND;
                return;
            }
            if (localName.equals("left_text")) {
                currentState = TITLE_LEFT_TEXT;
                return;
            }
    
            if (localName.equals("left_image")) {
                currentState = TITLE_LEFT_IMAGE;
                return;
            }
            if (localName.equals("search_image")) {
                currentState = TITLE_SEARCH_IMAGE;
                return;
            }
            if (localName.equals("left_text_size")) {
                currentState = TITLE_LEFT_TEXT_SIZE;
                return;
            }
            if (localName.equals("left_text_color")) {
                currentState = TITLE_LEFT_COLOR;
                return;
            }
            if (localName.equals("title_text_size")) {
                currentState = TITLE_TEXT_SIZE;
                return;
            }
            if (localName.equals("title_text_color")) {
                currentState = TITLE_TEXT_COLOR;
                return;
            }
            if (localName.equals("title_height")) {
                currentState = TITLE_HEIGHT;
                return;
            }
            if (localName.equals("background")) {
                currentState = TABS_BACKGROUD;
                return;
            }
            if (localName.equals("paddingTop")) {
                currentState = TABS_PADDINGTOP;
                return;
            }
            if (localName.equals("paddingBottom")) {
                currentState = TABS_PADDINGBOTTOM;
                return;
            }
            if (localName.equals("type")) {
                currentState = TABS_TAB_TYPE;
                return;
            }
            if (localName.equals("type")) {
                currentState = TABS_TAB_TYPE;
                return;
            }
            if (localName.equals("file")) {
                currentState = TABS_TAB_FILE;
                return;
            }
            if (localName.equals("icon")) {
                currentState = TABS_TAB_ICON;
                return;
            }
            if (localName.equals("name")) {
                currentState = TABS_TAB_NAME;
                return;
            }
            if (localName.equals("color")) {
                currentState = TABS_TAB_COLOR;
                return;
            }
            if (localName.equals("select_color")) {
                currentState = TABS_TAB_SELECT_COLOR;
                return;
            }
            if (localName.equals("text_color")) {
                currentState = TABS_TAB_TEXT_COLOR;
                return;
            }
            if (localName.equals("text_color_select")) {
                currentState = TABS_TAB_TEXT_COLOR_SELECT;
                return;
            }
            if (localName.equals("text_size")) {
                currentState = TABS_TAB_TEXT_SIZE;
                return;
            }
            if (localName.equals("tabbar")) {
                currentState = SAX_TABBAR;
                return;
            }
            if (localName.equals("icon_select")) {
                currentState = TABS_TAB_INCO_SELECT;
                return;
            }
            if (localName.equals("url")) {
                currentState = TABS_TAB_HTML;
                return;
            }
    
            currentState = 0;
        }
    
        public static PageInfo getpage(Context context) {
            SAXPraserHelper handler = null;
            try {
                // 这里我们实现了本地解析,所以注掉了这个取网络数据的。
                // URL url = new URL(rssUrl);
                SAXParserFactory factory = SAXParserFactory.newInstance();
                SAXParser parser = factory.newSAXParser();
                XMLReader reader = parser.getXMLReader();
                handler = new SAXPraserHelper();
                reader.setContentHandler(handler);
                InputSource is = new InputSource(context.getResources().getAssets().open("skin.xml"));// 取得本地xml文件
    
                reader.parse(is);
                return handler.getPageInfo();
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
    
        }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    
    <skin>
        <!-- 皮肤版本号 -->
        <version>1</version>
        <path>PhonePage</path>
        <title>
            <!-- 标题栏背景,可以图片或者颜色(颜色开头) -->
            <title_background>title_background</title_background>
            <!-- 标题栏左边的图片 -->
            <left_image>image/title_left.png</left_image>
            <!-- 标题栏左边的文字 -->
            <left_text>返回</left_text>
            <!-- 搜索图标 -->
            <search_image>search_red_icon</search_image>
            <!-- 标题左边文字大小(单位sp) -->
            <left_text_size>16</left_text_size>
            <!-- 标题左边文字颜色 -->
            <left_text_color>000000</left_text_color>
            <!-- 标题文字大小(单位sp) -->
            <title_text_size>18</title_text_size>
            <!-- 标题文字颜色 -->
            <title_text_color>000000</title_text_color>
            <!-- 标题高度(单位dp) -->
            <title_height>50</title_height>
        </title>
        
        <tabs>
            <!-- 导航栏背景颜色 -->
            <background>ff0000</background>
            <!-- 导航栏上边距(单位dp) -->
            <paddingTop>3</paddingTop>
            <!-- 导航栏下边据 (单位dp)-->
            <paddingBottom>3</paddingBottom>
            <tab>
                
                <!-- tab类型 -->
                <type>base</type>
                <!-- tab打开的Activity -->
                <file>com.junrui.fragment.TabFragment</file>
                <!-- tab图片名字(默认tab选择图片名字为tab图片名字后面加_select) -->
                <icon>tab1</icon>
                <icon_select>tab1_press</icon_select>
                <!-- tab显示的text -->
                <name>咨询</name>
                <!-- tab背景颜色 -->
                <color>fbfbfb</color>
                <!-- 选择tab时的背景颜色 -->
                    <select_color>FFCCCC</select_color>
                <!-- text颜色 -->
                <text_color>646464</text_color>
                <!-- 选择tab时的text颜色 -->
                <text_color_select>fd9800</text_color_select>
                <!-- text的大小(单位sp) -->
                <text_size>12</text_size>
                <url>index</url>
            </tab>
                <tab>
                <type>base</type>
                <file>com.junrui.fragment.TabTwoFragment</file>
                <icon>tab2</icon>
                <icon_select>tab2_press</icon_select>
                <name>患者</name>
                <color>fbfbfb</color>
                    <select_color>FFCCCC</select_color>
                <text_color>646464</text_color>
                <text_color_select>fd9800</text_color_select>
                <text_size>12</text_size>
                <url>index2</url>
            </tab>
            <tab>
                <type>base</type>
                <file>com.junrui.fragment.TabThreeFragment</file>
                <icon>tab3</icon>
                <icon_select>tab3_press</icon_select>
                <name>我的</name>
                <color>fbfbfb</color>
                <select_color>FFCCCC</select_color>
                <text_color>646464</text_color>
                <text_color_select>fd9800</text_color_select>
                <text_size>12</text_size>
                <url>index3</url>
            </tab>
        </tabs>
    </skin>
  • 相关阅读:
    SpringCloud之架构搭建
    3.通用权限设计——SnailAspNetCoreFramework快速开发框架之后端设计
    2.接口输入校验、输出格式、及异常处理——SnailAspNetCoreFramework快速开发框架之后端设计
    1、框架内各项目及目录的介绍和总设计思路——SnailAspNetCoreFramework快速开发框架
    SnailAspNetCoreFramework框架系列博客
    Asp.net core中间件实现原理及用法解说
    深入剖析linq的联接
    webapi框架搭建系列博客
    webapi框架搭建-依赖注入之autofac
    webapi框架搭建-创建项目(三)-webapi owin
  • 原文地址:https://www.cnblogs.com/g-sheng/p/5406540.html
Copyright © 2011-2022 走看看