Java 格式化xml字符串


基础思路

xml格式报文采用标签对的形式来表示,通常的结构为value,其中,value值可以为嵌套的xml报文。
先假设这样一个xml字符串:

<xml><a>1</a><b><c>2</c></b><d>3</d></xml>

格式化后的样式为:

<xml><a>1</a><b><c>2</c></b><d>3</d>
</xml>

本文的解决思路为:

  • 读取xml报文的第一个标签,读取这个标签的内容,记作inside,和这个标签外的报文记作outside。
  • 依次对inside和outside作为xml报文对其进行步骤1的处理。如果检测到inside不是xml报文或outside为空,则不做处理。

代码实现

主体代码:

private static String formatXml(String message, int depth) {String format = ""; //格式化的xml报文String firstTag = getFirstTag(message);String inside = getInsideContent(firstTag, message);String outside = getOutsideContent(firstTag, message);String insideTag = getFirstTag(inside); //根据是否含有第一个标签来获取字符串是否是xml报文格式,这个的判断逻辑并不严谨//对于inside是xml报文的情况下,当前标签的结束标记需要另起一行if (insideTag == null) {format = "\r\n" + indent(depth) + "<" + firstTag + ">" + inside + "</" + firstTag + ">";} else {format = "\r\n" + indent(depth) + "<" + firstTag + ">" + formatXml(inside, depth + 1)+ indent(depth) + "</" + firstTag + ">";}String outsideTag = getFirstTag(outside);if (outsideTag != null) {format += indent(depth) + formatXml(outside, depth);} else {format += "\r\n";}return format;
}

以下函数实现比较容易,就不贴代码出来了:

  • String getFirstTag(String content)
    content:xml报文
    return:获取xml报文的第一个标签,没有则返回为空

  • String getInsideContent(String tag, String content)
    tag:标签
    content:xml报文
    return:获取该标签下的value值

  • String getOutsideContent(String tag, String content)
    tag:标签
    content:xml报文
    return:获取该标签外的报文

  • String indent(int depth)
    depth:报文深度
    return:获取当前标签需要的空格字符串

测试

测试代码:
formatXml(content, 0)
测试数据:

<books><book><author>Jack Herrington</author><title>PHP Hacks</title><publisher>O'Reilly</publisher></book><book><author>王小为</author><title>深入在线工具</title><publisher>aTool.org组织</publisher></book></books>

测试截图:

项目地址

项目地址

Java 格式化xml字符串相关推荐

  1. Java传xml时字符串乱码_php调用java传递xml字符串乱码怎么办

    php调用java传递xml字符串乱码的解决办法:首先使用CURL在命令行中完成请求:然后将调用接口时的[Content-Type:application/json]改成[application/xm ...

  2. Java解析XML字符串格式

    Java解析XML字符串格式 前言 代码示例 结果展示 前言 java解析XML字符串格式使用的是Dom4j这一种方式; dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文 ...

  3. java格式化XML文件

    现有的xml格式不符合程序的要求,于是动手写一个格式化xml的小工具. 现有的数据格式是这样的 格式化之后的效果 格式化xml的方法有很多,我使用的是Dom4j方法 public class Form ...

  4. java格式化时间字符串 毫秒_SimpleDateFormat是否有格式字符串来获取毫秒日期时间值,而不是人类可读的格式?...

    旧的和过时的 SimpleDateFormat 类不能这样做.它的替代品,现代的 DateTimeFormatter ,可以. DateTimeFormatter epochMilliFormatte ...

  5. Java 格式化 XML

    项目中会有XML报文,格式化后便于查看 import com.sun.org.apache.xml.internal.serialize.OutputFormat; import com.sun.or ...

  6. java 解析xml字符串的_java 解析xml字符串

    在做第三方接口测试的时候很容遇到接口返回的数据类型是xml串.把我解决问题的方法记录下来,供参考. 需要引入dom4j的jar包: package com.test; import java.util ...

  7. java 格式化日期字符串

    1. 字符串转换为日期 public Date parseDate(String strDate,String pattern){if(strDate==null || pattern==null | ...

  8. JAVA 解析xml字符串

    导入dom4j jar包 final String returnXML = "<xml><return_code><![CDATA[SUCCESS]]>& ...

  9. java解析xml 字符串_Java解析XML字符串

    展开全部 publicclass MyXMLReader2DOM4J { publicstaticvoid main(String arge[]) { long lasting = System.cu ...

最新文章

  1. 201621123075作业12-流与文件
  2. GitHub超3万星:Transformer 3发布,BERT被一分为二
  3. HtmlAgilityPack 总结(一)
  4. 数据中心水环热泵余热回收系统分析与应用
  5. 3维线程格 gpu_论文导读 | GPU加速子图同构算法
  6. VTK:模型之CappedSphere
  7. 阿里集团业务驱动的升级——Dubbo 3.0 的演进思路
  8. android 版本28 通知栏图标,【专题分析】应用图标、通知栏适配
  9. 基于Maven的SSH框架搭建
  10. opencv android模版匹配,Opencv for android 模板匹配
  11. 【leetcode】First Missing Positive(hard) ☆
  12. 获取建模美赛O奖的方法和经验!文末资料放送
  13. Unity web聊天通讯功能开发(1)
  14. 图的遍历:深度优先遍历(DFS)
  15. 从0开发豆果美食小程序——tag组件
  16. python基础ppt_Python入门之你必须了解的基础知识
  17. 微星电脑不能u盘引导linux,微星电脑设置从U盘启动的三种方式
  18. wps在word文档中插入xlsx格式文档会自动打开
  19. Ti ub954/953 Sensor调试心得
  20. [ABC200F]Minflip Summation

热门文章

  1. 自己封装的数据库DbUtils的万能模板
  2. idea jsp mysql
  3. 动态绑定style写法
  4. Windows 8 平板(推荐)
  5. 7-2 航空公司VIP客户查询 (20分)
  6. 游戏厂商利好消息:吃鸡人气下滑严重 新一轮瓜分游戏用户盘子来啦
  7. 我为什么鼓励你读计算机领域的博士?
  8. 手机中的照片不见了如何恢复
  9. scala基本操作分解实战
  10. 阿里云手机号停机了怎么办?阿里云手机号收不到验证码,阿里云子账号建立教程