博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码生成器----xml自解析生成StringBuffer
阅读量:6879 次
发布时间:2019-06-26

本文共 1886 字,大约阅读时间需要 6 分钟。

hot3.png

        最近遇到一个项目,要通过接口对外传输数据,采用xml格式传送,一看文档40多个接口啊,瞬间感觉生活没希望了。如果要一点点拼接成字符串,是非常耗时的,当然,肯定也很烦躁。如果通过XStream将JavaBean序列化成xml,还要为每个接口定义一个JavaBean,也很麻烦。于是考虑是不是能写个程序能自己解析xml节点,然后直接拼接成代码,这样就只关注赋值就可以了。代码没什么技术含量,就一个正则,一个文件I/O。

测试xml:

123456

结果:

StringBuffer sb = new StringBuffer();sb.append("
");sb.append("
");sb.append("
").append("").append("
");sb.append("
").append("").append("
");sb.append("
");

源码如下:

package com.example;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.regex.Matcher;import java.util.regex.Pattern;/**  * * @since jdk1.6 * @date 2016-8-5 */public class TestRun {	/** 	 * @param args  	 * @throws IOException 	 */	public static void main(String[] args) throws IOException {		File file = new File("F:/test.xml");		FileInputStream fis = new FileInputStream(file);		BufferedReader br = new BufferedReader(new InputStreamReader(fis));		String line = "";		Pattern pattern = Pattern.compile("<.[^<>?]*>[\\s|\\S]*
?]*>"); Pattern pattern1 = Pattern.compile("<.[^<>?]*/>"); System.out.println("StringBuffer sb = new StringBuffer();"); while ((line = br.readLine()) != null) { String res = line.trim(); Matcher matcher = pattern.matcher(res); Matcher matcher1 = pattern1.matcher(res); if(matcher.matches()){ String a = res.substring(res.indexOf("<") + 1, res.indexOf(">")); System.out.println("sb.append(\"<"+a+">\").append(\"\").append(\"
\");"); }else if(matcher1.matches()){ String b = res.substring(res.indexOf("<") + 1, res.indexOf("/>")); System.out.println("sb.append(\"<"+b+">\").append(\"\").append(\"
\");"); }else{ System.out.println("sb.append(\""+res.replace("\"", "\\\"")+"\");"); } } }}

 

 

 

 

 

 

 

转载于:https://my.oschina.net/blueSky4Java/blog/727873

你可能感兴趣的文章
[原] KVM 虚拟化原理探究(2)— QEMU启动过程
查看>>
使用Java程序调用MatLab
查看>>
什么是C++虚函数、虚函数的作用和使用方法
查看>>
Atitit.cto 与技术总监的区别
查看>>
关于【自证清白】
查看>>
手把手教你crontab排障
查看>>
订单编号
查看>>
纪念我曾经的 JAVA 姿势--转
查看>>
js 如何清除setinterval
查看>>
我为NET狂官方面试题-数据库篇答案
查看>>
玩转iOS开发:iOS开发中的装逼技术 - RunTime(一)
查看>>
CSS实现水平垂直居中的1010种方式(史上最全)
查看>>
BCH曼谷矿工会议的积极方面:社区彼此更加了解
查看>>
Android之观察者模式
查看>>
微信公众号支付开发全过程(Java 版)
查看>>
SwiftLint代码规范属性说明(二)
查看>>
本周半价(12.16-12.22)电子书
查看>>
是时候深入了解Linux的系统结构了
查看>>
4月第3周业务风控关注 | 文化部再次审查直播和游戏产品,已下架4939款直播应用...
查看>>
源码探探之startActivity(二)
查看>>