zoukankan      html  css  js  c++  java
  • firstobjet free xml的格式化

    今天在研究framemark 生成word,发现一个用来打开xml文件的小工具,就是firstobject free xml,如果不进行设置,打开的xml文件还是没有格式,刚开始我用此工具打开一个以中文名字命名的文件"商品条形码数据.xml"只要一用此工具就卡,后来把此文件改为英文,立马就好了,不过,打开的xml文件没有格式,看起很乱,后来百度,设置下

    用Firstobject free XML editor格式化xml文件的方法是在tool->preferences里。设置Indent为Tabs,然后打开你要格式化的XML文件,选 择Tools下的Indent【或者按快捷键F8】就搞定。左边是XML的文档结构,右边是文档内容,很清晰。

    2、其实notepad++也可以添加xml的插件

    1、找到工具栏上的插件-->Plugin Manger-->show Plugin Mangager--->选择以xml 开头的进行安装后

    然后选择 在插件工具栏下就会有xml Tools--->Pretty print 也就是crel+alt+shirt+b即可

    接着说一说利用framemark生成word:

    项目中需要用 java 程序生成doc 文件,百度一番,FreeMarker 的评价比较高,FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,至于想详细了解 FreeMarker 的请去问百度, 当然使用poi也可以生成word

    1. 制作 Word 模版

    2. 将 Word文档保存为 xml

    3. freemarker 标签语言替换字段

    用 Firstobject free XML edito 打开,将你需要动态生成的字段打上标记,${} 这样就可以

    4. 引入项目

    将 xml 文件更改后缀名 为 .ftl, 然后引用到你的项目中

    需要注意的问题:

    a. word 版本不能低于 2003 ,因为 2003 才开始支持 xml;

    b.用 Firstobject free XML edito 打开 要编辑的 xml 文件时,xml 不要放在含有中文路径的目录中【编辑器会无响应,然后你知道的.....】

    实现的代码如下:

    package com.dianzhi.db;
    
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    
    public class TestWord  {
        private Configuration configuration = null;
        private DBManager db = null;
         private Connection conn;
          private ResultSet res;
    
        public TestWord() {
            configuration = new Configuration();
            db = new DBManager();
            configuration.setDefaultEncoding("UTF-8");
        }
    
        public static void main(String[] args) {
            TestWord testWord = new TestWord();
            testWord.createWord();
    
        }
    
        public void createWord() {
            Map<String, Object> dataMap = new HashMap<String, Object>();
            
            conn = db.getConn();
            PreparedStatement pre = null;
            try {
                String selectSql = "SELECT ID,NAME,NORMALPRICE,MEMBERPRICE FROM PRODUCT ";
                PreparedStatement state = conn.prepareStatement(selectSql);
                ResultSet res = state.executeQuery();
                while (res.next()) {
                    dataMap.put("id", res.getString("id").trim());
                    dataMap.put("name", res.getString("name").trim());
                    dataMap.put("normalprice", res.getString("normalprice").trim());
                    dataMap.put("memberprice", res.getString("memberprice").trim());
                    configuration.setClassForTemplateLoading(this.getClass(),
                            "notificationTemplate"); // FTL鏂囦欢鎵?瓨鍦ㄧ殑浣嶇疆
                    Template template = configuration.getTemplate("a.ftl");
    
                    File outFile = new File("D:/temp/"
                            + res.getString("NAME").toString().trim()
                                    .replaceAll("/", "") + ".doc");
                    Writer out = new BufferedWriter(new OutputStreamWriter(
                            new FileOutputStream(outFile), "UTF-8"));
                    template.process(dataMap, out);
    
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    . 代码数据库为 oralce,将查询到的数据,动态填入到wod 中;

     b.template.process(),接受一个 Map 和 输入流做为入参,Map 既是你需要动态生成到 doc 里面的数据,字段名必须与你在 .ftl 里面定义的一致;

     c. 我觉得数据的来源可以很多,程序计算的结果,数据库存储的数据,页面点击的数据.........

     d. 如果你想利用这段代码,需要有一个 .ftl 文件,并且在你的项目 src 目录下面新建 template 目录;

    FreeMarker.jar 、实例项目的.ftl

    e.大家在做测试的时候,路径一定要对

     这是我分享的百度云链接,大家需要可以下载:

    http://pan.baidu.com/s/1pKFjATt

  • 相关阅读:
    [TPYBoard
    Ubuntu 16.04 搭建KVM环境
    kali kvm Requested operation is not valid: network 'default' is not active
    SFTP文件上传与下载(window 上传文件到linux服务器)
    如何在linux下查看目录的剩余空间大小
    虚拟机三种网络模式详解(Bridge,Nat,Host-only)
    Vmware虚拟机三种网络模式详解
    vmware的硬件选项里有关于虚拟化引擎的选项(虚拟机支持硬件虚拟化)
    liunx Swap 分区的作用
    linux中chmod与chown两个命令详解
  • 原文地址:https://www.cnblogs.com/chizizhixin/p/5442035.html
Copyright © 2011-2022 走看看