前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XML格式化的一段代码

XML格式化的一段代码

作者头像
全栈程序员站长
发布2022-09-13 10:26:14
1K0
发布2022-09-13 10:26:14
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

起因

没有找到android有相关的工具类,又不要为了格式化个xml导入一个jar包。

于是自己写了个xml格式化的代码。

代码如下:

代码语言:javascript
复制
  /**
     * 格式化xml
     *
     * @return
     */
    public String format(String str) {
        StringBuffer buffer = new StringBuffer(str);
        int numSpace = 0;//空格的个数
        /**
         * 定位开始结束标签
         */
        int start = buffer.indexOf("<", 0);
        int end = buffer.indexOf(">", start);
        //定位下下个标签
        int nextStart =  buffer.indexOf("<", end);//-1之后
        boolean isNext = true;

        while (start != -1 && end != -1) {
            /**
             * 是否换行,已经换多少格
             */
            //如果当前为开始标签,下一个也为开始标签
            if ((buffer.indexOf("/", start) != start + 1 && buffer.indexOf("/", nextStart) != nextStart + 1)) {
                numSpace++;
                isNext = true;
            }
            //如果当前为开始标签,且下一个标签为结束标签
            else if ((buffer.indexOf("/", start) != start + 1 && buffer.indexOf("/", nextStart) == nextStart + 1)) {
                isNext = false;
            }
            //如果当前为结束标签,且下一个标签为开始标签
            else if ((buffer.indexOf("/", start) == start + 1 && buffer.indexOf("/", nextStart) != nextStart + 1)) {
                isNext = true;
            }
            //如果当前为结束标签,且下一个标签还是结束标签
            else if ((buffer.indexOf("/", start) == start + 1 && buffer.indexOf("/", nextStart) == nextStart + 1)) {
                numSpace--;
                isNext = true;
            }

            //这个位置判断是否是加空格
            if (isNext) buffer.insert(end + 1, "\n" + $t(numSpace));
            //标签向下移动
            start = buffer.indexOf("<", end);
            end = buffer.indexOf(">", start);
            nextStart =  buffer.indexOf("<", end);
        }


        // 注释:返回我们格式化后的结果
        return buffer.toString();
    }

    //返回N个\t
    private String $t(int num) {
        String t = "";
        for (int i = 1; i < num; i++) {
            t += "\t";
        }
        return t;
    }

记录于此。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160143.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档