元旦节前,写了个小程序,辅助把概设里面的动不动就20多个字段的table自动生成成html脚本。今天改了下,也许以后还可以用来自动生成除了table外的其他的html脚本呢~。
概设里面的:
String productTypeName 产品类型
String brandName 品牌
跑下程序,自动转成html语句:
<ig:BoundDataField DataFieldName="productTypeName" Key="productTypeName" Width="80px"><Header Text="产品类型" /></ig:BoundDataField>
<ig:BoundDataField DataFieldName="brandName" Key="brandName" Width="80px"><Header Text="品牌" /></ig:BoundDataField>
开始干活~~
Step1:一个接口,将一个String格式化为html格式的String,可能是table,可能是input~~
package com.zyp.util.file.format;
public interface IFormater{
public String formatToHtml(String var);
}
Step2:实现该接口的类,转成table语句
package com.zyp.util.file.format;
import java.util.StringTokenizer;
public class WebDataGridFormater implements IFormater{
public String formatToHtml(String var) {
return fromatToHTML(var);
}
//将字符串格式化为html语句。
public String fromatToHTML(String s){
int index = 0;
String rtnValue = null;
String[] tokens = new String[4];
if(s==null){
return null;
}
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens()) {
String value = st.nextToken();
int i = value.indexOf("(");
if(i>0){
value = value.substring(0, i);
}
int k = value.indexOf("(");
if(k>0){
value = value.substring(0, k);
}
tokens[index] = value;
index++;
}
//根据显示table的字数,设置宽度
int px = countPx(tokens[2]);
//默认不隐藏
if(index==3){
rtnValue = "<ig:BoundDataField DataFieldName=\""+tokens[1]+"\" Key=\""+tokens[1]+"\" Width=\""+px+"px\"><Header Text=\""+tokens[2]+"\" /></ig:BoundDataField>";
}
//隐藏该列
else if(index == 4){
rtnValue = "<ig:BoundDataField DataFieldName=\""+tokens[1]+"\" Key=\""+tokens[1]+"\" Hidden=\""+tokens[3]+"\" ><Header Text=\""+tokens[1]+"\" /></ig:BoundDataField>";
}
return rtnValue;
}
//根据显示的字符长度,设置该列宽度
public int countPx(String pxString){
int rtnValue = 0;
//<4: 80px
//<6:100px
//<10:120
//>10:150
int len = pxString.length();
if(len<=4){
rtnValue = 80;
}else if(len<=6){
rtnValue = 100;
}else if(len<=8){
rtnValue = 120;
}else if(len<=10){
rtnValue = 150;
}else{
rtnValue = 200;
}
return rtnValue;
}
}
Step3:找一个Helper来根据指定的类名,返回一个formater:
package com.zyp.util.file.format;
public class FormatHelper {
private static FormatHelper instance = new FormatHelper();
public static FormatHelper getInstance() {
return instance;
}
public IFormater createFormater(String foramterClassName) {
IFormater formater = null;
try {
Class classType = Class.forName(foramterClassName);
formater = (IFormater) classType.newInstance();
return formater;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return formater;
}
}
Step4:主方法,读取配置文件,得到当前输入的字符串和输出字符串的文件。逐行遍历输入文件,通过上面的Helper得到一个Formater,转换成对应格式的html语句,写入输出文件:
package com.zyp.util.file;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Properties;
import com.zyp.util.file.format.FormatHelper;
import com.zyp.util.file.format.IFormater;
public class Util {
public static String DATA_GRID_NAME = "<ig:BoundDataField DataFieldName=";
private static String inPath = ".\\temp.txt";
private static String outPath = ".\\out.txt";
private static String configName = "config.properties";
private static Properties p;
private static IFormater formater;
public static void init() {
try {
Util util = new Util();
InputStream is = util.getClass().getResourceAsStream(
"/" + configName);
p = new Properties();
p.load(is);
String input = (String) p.get("input");
String output = (String) p.get("output");
String formaterName = p.getProperty("classname");
if (input != null) {
inPath = input;
}
if (output != null) {
outPath = output;
}
if ( formaterName != null) {
formater = FormatHelper.getInstance().createFormater(formaterName);
}
System.out.println("input file = " + inPath);
System.out.println("output file = " + outPath);
System.out.println("formater name = " + formater.getClass().getName());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 将字符串格式化为html语句。
public static String fromatToHTML(String s){
return formater.formatToHtml(s);
}
public static void main(String[] args) {
try {
init();
File inFile = new File(inPath);
File outFile = new File(outPath);
if (!outFile.exists()) {
String dir = outPath.substring(0, outPath.lastIndexOf("\\"));
File dirFile = new File(dir);
if (!dirFile.exists()) {
if (!dirFile.mkdir())
System.out.println("create directory failed!");
return;
}
if (!outFile.createNewFile()) {
System.out.println("create file failed");
return;
}
}
BufferedReader reader = null;
OutputStreamWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(
new FileInputStream(inFile), "UTF-8"));
writer = new OutputStreamWriter(new FileOutputStream(outPath),
"UTF-8");
String tempString = null;
int line = 0;
while ((tempString = reader.readLine()) != null) {
String html = fromatToHTML(tempString);
System.out.println(html);
writer.write(html + "\n");
writer.flush();
line++;
}
System.out.println("共处理数据:" + line);
reader.close();
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Step5:最后一个ant脚本,帮忙打包:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="UtilProject" basedir="." default="run">
<property name="projectName" value="Util" />
<property name="src" value="src" />
<property name="classes" value="classes" />
<property name="jarDir" value="dist"/>
<path id="classpath">
<fileset dir="${jarDir}">
<include name="*.jar"/>
<include name="config.properties"/>
</fileset>
</path>
<target name="init">
<mkdir dir="${classes}"/>
<mkdir dir="${jarFile}"/>
</target>
<target name="compile" depends="init" >
<javac srcdir="${src}" destdir="${classes}" encoding="UTF-8"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${jarDir}/${projectName}.jar"
basedir="${classes}"
includes="**/*.class"/>
</target>
<target name="run" depends="build">
<java classname="com.zyp.util.file.Util" >
<classpath>
<pathelement path="${jarDir}"/>
<fileset dir="${jarDir}" >
<include name="*.jar" />
<include name="*.properties" />
<include name="*.txt" />
</fileset>
</classpath>
</java>
</target>
</project>
Step6:打出一个jar包来后,写一个bat,执行main方法,就可以给大家用了
@echo off
set classpath=%CLASS_PATH%;.;./util.jar;./config.properties
echo %classpath%
java com.zyp.util.file.Util
pause
Step7:config.properties里面指定输入和输出文件的路径,及转换的类,运行上面的bat文件就完了。
#读取文件路径:
input=.\\temp.txt
#输出文件路径:
output=.\\out.txt
#格式化的类名:
classname=com.zyp.util.file.format.WebDataGridFormater
分享到:
相关推荐
微信小程序 我厨 tab 界面设计 (源码)微信小程序 我厨 tab 界面设计 (源码)微信小程序 我厨 tab 界面设计 (源码)微信小程序 我厨 tab 界面设计 (源码)微信小程序 我厨 tab 界面设计 (源码)微信小程序 我厨 tab 界面...
小程序使用的是基于 JavaScript 的 WXML(WeiXin Markup Language)和 WXSS(WeiXin Style Sheet)来构建用户界面,配合 JSON 配置文件进行页面路由和数据管理。在创建登陆界面时,我们需要用 WXML 定义界面结构,用...
微信小程序界面美化是一个重要的开发环节,它涉及到用户体验和交互设计,是吸引用户并提升用户留存的关键因素。在本文中,我们将深入探讨如何通过各种技术手段和设计原则来优化微信小程序的视觉效果。 首先,我们...
在微信小程序中,用户协议界面是必不可少的一部分,它通常包含用户使用服务前必须阅读并同意的条款和政策。这篇博客将深入探讨如何在微信小程序中创建一个用户协议界面,并提供四个关键的代码文件,帮助开发者直接...
【微信小程序个人中心-我的界面】是小程序设计中不可或缺的一部分,它通常包含了用户与小程序交互的核心功能和个性化设置。在这一界面中,开发者会展示用户的个人信息、操作记录、设置选项等,以提供个性化的用户...
标题中的“PS改界面小程序可改ps20152017”指的是一个能够修改Adobe Photoshop(简称PS)用户界面的小程序,适用于Photoshop 2015和2017这两个版本。这个工具允许用户自定义软件的外观,以适应个人喜好或提高工作...
【Android简单界面小程序】 在移动应用开发领域,Android平台因其开源和广泛的设备支持而备受青睐。对于初学者来说,理解并构建基本的Android界面是学习过程中至关重要的一步。本资源集合了7个精心设计的简单...
在微信小程序开发中,设计一个有效的登录界面是至关重要的,因为它是用户与应用程序初次交互的地方。这个主题“微信小程序登录界面设计(可以登录)”针对初级开发者,旨在提供一种实现简单登录功能的方法。下面我们...
微信小程序源码 B站首页界面设计:附详细教程(学习版)微信小程序源码 B站首页界面设计:附详细教程(学习版)微信小程序源码 B站首页界面设计:附详细教程(学习版)微信小程序源码 B站首页界面设计:附详细教程(学习版)...
小程序源码 B站首页界面设计:附详细教程 (代码+截图)小程序源码 B站首页界面设计:附详细教程 (代码+截图)小程序源码 B站首页界面设计:附详细教程 (代码+截图)小程序源码 B站首页界面设计:附详细教程 (代码+截图)...
微信小程序源码(含截图)我厨 tab 界面设计微信小程序源码(含截图)我厨 tab 界面设计微信小程序源码(含截图)我厨 tab 界面设计微信小程序源码(含截图)我厨 tab 界面设计微信小程序源码(含截图)我厨 tab ...
7、通过本源码,可学习到一些基本的微信小程序的布局,提升写代码的效率; 8、适用于学习微信小程序的用户; 9、可以使用于任何需要的小程序首页布局中; 10、喜欢的可以点赞、收藏加关注哦,以免找不到了哦; 11、...
在这个名为“微信小程序点餐界面代码.zip”的压缩包中,我们可以预期找到用于构建一个简单餐厅点餐系统的全部源代码。下面,我们将深入探讨微信小程序开发的关键知识点,以及如何构建一个点餐界面。 1. **小程序...
7、通过本源码,可学习到一些基本的微信小程序的布局,提升写代码的效率; 8、适用于学习微信小程序的用户; 9、可以使用于任何需要的小程序首页布局中; 10、喜欢的可以点赞、收藏加关注哦,以免找不到了哦; 11、...
【Transfer-Window-master 小程序界面】是一款基于微信小程序开发的项目,它的核心目标是提供一个用户友好的界面,让使用者能够轻松、高效地在微信环境中进行交互。小程序作为微信平台上的轻量级应用,无需下载安装...
【微信小程序UI界面通用】是本压缩包的主题,它包含了六款不同的前端微信小程序的完整代码,这些代码设计精美,风格炫酷,适用于各种应用场景。作为一款通用的UI界面,它们能够满足不同开发者的需求,方便进行二次...
微信小程序 小程序页面生成器 (源码)微信小程序 小程序页面生成器 (源码)微信小程序 小程序页面生成器 (源码)微信小程序 小程序页面生成器 (源码)微信小程序 小程序页面生成器 (源码)微信小程序 小程序页面生成器 ...
【微信小程序个人中心界面开发详解】 在微信小程序的开发中,个人中心或“我的”页面是用户与应用交互的重要组成部分,通常包含用户个人信息展示、功能操作入口等元素。本示例将详细介绍如何创建一个简单的个人中心...
从WXML(微信小程序的标记语言)代码中可以看到,界面主要由几个关键组件构成: 1. **顶部欢迎信息**:`<view class="top-box">` 包含了“Hi”和“欢迎使用!”的文本,用于向用户展示友好的问候。 2. **导航栏**...
微信小程序前端界面实现