RTEditor/src/main/java/com/onegravity/rteditor/converter/ConverterHtmlToSpanned.java
private void handleStartTag(String tag, Attributes attributes) {
        if (tag.equalsIgnoreCase("br")) {
            // We don't need to handle this. TagSoup will ensure that there's a </br> for each <br>
            // so we can safely omit the line breaks when we handle the close tag.
        } else if (tag.equalsIgnoreCase("p")) {
            handleP();
        } else if (tag.equalsIgnoreCase("div")) {
            startDiv(attributes);
        } else if (tag.equalsIgnoreCase("ul")) {
            startList(false, attributes);
        } else if (tag.equalsIgnoreCase("ol")) {
            startList(true, attributes);
        } else if (tag.equalsIgnoreCase("li")) {
            startList(attributes);
        } else if (tag.equalsIgnoreCase("strong")) {
            start(new Bold());
        } else if (tag.equalsIgnoreCase("b")) {
            start(new Bold());
        } else if (tag.equalsIgnoreCase("em")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("cite")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("dfn")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("i")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("strike")) {
            start(new Strikethrough());
        } else if (tag.equalsIgnoreCase("del")) {
            start(new Strikethrough());
        } else if (tag.equalsIgnoreCase("big")) {
            start(new Big());
        } else if (tag.equalsIgnoreCase("small")) {
            start(new Small());
        } else if (tag.equalsIgnoreCase("font")) {
            startFont(attributes);
        } else if (tag.equalsIgnoreCase("blockquote")) {
            handleP();
            start(new Blockquote());
        } else if (tag.equalsIgnoreCase("tt")) {
            start(new Monospace());
        } else if (tag.equalsIgnoreCase("a")) {
            startAHref(attributes);
        } else if (tag.equalsIgnoreCase("u")) {
            start(new Underline());
        } else if (tag.equalsIgnoreCase("sup")) {
            start(new Super());
        } else if (tag.equalsIgnoreCase("sub")) {
            start(new Sub());
        } else if (tag.length() == 2 &&
                Character.toLowerCase(tag.charAt(0)) == 'h' &&
                tag.charAt(1) >= '1' && tag.charAt(1) <= '6') {
            handleP();
            start(new Header(tag.charAt(1) - '1'));
        } else if (tag.equalsIgnoreCase("img")) {
            startImg(attributes);
        } else if (tag.equalsIgnoreCase("video")) {
            startVideo(attributes);
        } else if (tag.equalsIgnoreCase("embed")) {
            startAudio(attributes);
        } else if (sIgnoreTags.contains(tag.toLowerCase(Locale.getDefault()))) {
            mIgnoreContent = true;
        }
    }
private void handleStartTag(String tag, Attributes attributes) {
        if (tag.equalsIgnoreCase("br")) {
            // We don't need to handle this. TagSoup will ensure that there's a </br> for each <br>
            // so we can safely omit the line breaks when we handle the close tag.
        } else if (tag.equalsIgnoreCase("p")) {
            handleP();
        } else if (tag.equalsIgnoreCase("div")) {
            startDiv(attributes);
        } else if (tag.equalsIgnoreCase("ul")) {
            startList(false, attributes);
        } else if (tag.equalsIgnoreCase("ol")) {
            startList(true, attributes);
        } else if (tag.equalsIgnoreCase("li")) {
            startList(attributes);
        } else if (tag.equalsIgnoreCase("strong")) {
            start(new Bold());
        } else if (tag.equalsIgnoreCase("b")) {
            start(new Bold());
        } else if (tag.equalsIgnoreCase("em")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("cite")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("dfn")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("i")) {
            start(new Italic());
        } else if (tag.equalsIgnoreCase("strike")) {
            start(new Strikethrough());
        } else if (tag.equalsIgnoreCase("del")) {
            start(new Strikethrough());
        } else if (tag.equalsIgnoreCase("big")) {
            start(new Big());
        } else if (tag.equalsIgnoreCase("small")) {
            start(new Small());
        } else if (tag.equalsIgnoreCase("font")) {
            startFont(attributes);
        } else if (tag.equalsIgnoreCase("blockquote")) {
            handleP();
            start(new Blockquote());
        } else if (tag.equalsIgnoreCase("tt")) {
            start(new Monospace());
        } else if (tag.equalsIgnoreCase("a")) {
            startAHref(attributes);
        } else if (tag.equalsIgnoreCase("u")) {
            start(new Underline());
        } else if (tag.equalsIgnoreCase("sup")) {
            start(new Super());
        } else if (tag.equalsIgnoreCase("sub")) {
            start(new Sub());
        } else if (tag.length() == 2 &&
                Character.toLowerCase(tag.charAt(0)) == 'h' &&
                tag.charAt(1) >= '1' && tag.charAt(1) <= '6') {
            handleP();
            start(new Header(tag.charAt(1) - '1'));
        } else if (tag.equalsIgnoreCase("img")) {
            startImg(attributes);
        } else if (tag.equalsIgnoreCase("video")) {
            startVideo(attributes);
        } else if (tag.equalsIgnoreCase("embed")) {
            startAudio(attributes);
        } else if (sIgnoreTags.contains(tag.toLowerCase(Locale.getDefault()))) {
            mIgnoreContent = true;
        }
    }
****************************************** Handle Tags *******************************************