Java 格式化xml字符串
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字符串相关推荐
- Java传xml时字符串乱码_php调用java传递xml字符串乱码怎么办
php调用java传递xml字符串乱码的解决办法:首先使用CURL在命令行中完成请求:然后将调用接口时的[Content-Type:application/json]改成[application/xm ...
- Java解析XML字符串格式
Java解析XML字符串格式 前言 代码示例 结果展示 前言 java解析XML字符串格式使用的是Dom4j这一种方式; dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文 ...
- java格式化XML文件
现有的xml格式不符合程序的要求,于是动手写一个格式化xml的小工具. 现有的数据格式是这样的 格式化之后的效果 格式化xml的方法有很多,我使用的是Dom4j方法 public class Form ...
- java格式化时间字符串 毫秒_SimpleDateFormat是否有格式字符串来获取毫秒日期时间值,而不是人类可读的格式?...
旧的和过时的 SimpleDateFormat 类不能这样做.它的替代品,现代的 DateTimeFormatter ,可以. DateTimeFormatter epochMilliFormatte ...
- Java 格式化 XML
项目中会有XML报文,格式化后便于查看 import com.sun.org.apache.xml.internal.serialize.OutputFormat; import com.sun.or ...
- java 解析xml字符串的_java 解析xml字符串
在做第三方接口测试的时候很容遇到接口返回的数据类型是xml串.把我解决问题的方法记录下来,供参考. 需要引入dom4j的jar包: package com.test; import java.util ...
- java 格式化日期字符串
1. 字符串转换为日期 public Date parseDate(String strDate,String pattern){if(strDate==null || pattern==null | ...
- JAVA 解析xml字符串
导入dom4j jar包 final String returnXML = "<xml><return_code><![CDATA[SUCCESS]]>& ...
- java解析xml 字符串_Java解析XML字符串
展开全部 publicclass MyXMLReader2DOM4J { publicstaticvoid main(String arge[]) { long lasting = System.cu ...
最新文章
- 201621123075作业12-流与文件
- GitHub超3万星:Transformer 3发布,BERT被一分为二
- HtmlAgilityPack 总结(一)
- 数据中心水环热泵余热回收系统分析与应用
- 3维线程格 gpu_论文导读 | GPU加速子图同构算法
- VTK:模型之CappedSphere
- 阿里集团业务驱动的升级——Dubbo 3.0 的演进思路
- android 版本28 通知栏图标,【专题分析】应用图标、通知栏适配
- 基于Maven的SSH框架搭建
- opencv android模版匹配,Opencv for android 模板匹配
- 【leetcode】First Missing Positive(hard) ☆
- 获取建模美赛O奖的方法和经验!文末资料放送
- Unity web聊天通讯功能开发(1)
- 图的遍历:深度优先遍历(DFS)
- 从0开发豆果美食小程序——tag组件
- python基础ppt_Python入门之你必须了解的基础知识
- 微星电脑不能u盘引导linux,微星电脑设置从U盘启动的三种方式
- wps在word文档中插入xlsx格式文档会自动打开
- Ti ub954/953 Sensor调试心得
- [ABC200F]Minflip Summation