java xml xsl 多文件_Java+XSL合并多个XML文件

使用 Java 解析 XML 文件有许多成熟的工具,如 dom4j 等等。但在一些场景中,我们可能使用 Ant、Maven 等构建工具对多个 XML 文件进行合并,我们希望可以直接通过脚本文件,或者简单的程序就能完成这样的功能,那么使用 XSL 是一个非常不错的选择。本文将介绍通过简单的 Java 程序加上 XSL 文件来完成多个 XML 文件的合并操作。(XSL 是一种样式表语言,可用以描述如何显示一个 XML 文件)

背景:

Config.xml 文件的结构与 FinalConfig.xml 文件相似;

需要将 Config.xml 文件的内容合并到 FinalConfig.xml 文件;

若 FinalConfig.xml 文件中已存在 Config.xml 的内容,则覆盖。

目标:程序执行完成后,生成一个唯一的 XML 文件 FinalConfig.xml;

FinalConfig.xml 文件结构:

1

2

3

4 100

5 Fly to the Moon

6 This is Fly to the Moon

7

8

9 101

10 10 Miles

11 This is 10 Miles

12

13

14

Config.xml 文件结构:

1

2

3

4 100

5 Fly to the Sun

6 This is Fly to the Sun

7

8

9

我们假定 gameid 是固定值,不会变。在合并完成后,为 100 的 node 被更新。希望得到新的 FinalConfig.xml 文件如下:

1

2

3

4 100

5 Fly to the Sun

6 This is Fly to the Sun

7

8

9 101

10 10 Miles

11 This is 10 Miles

12

13

14

一、Java 调用程序

1 private voidmergeXml(File xslFile, File configXml, File finalConfigXml){2 DocumentBuilderFactory dbFac =DocumentBuilderFactory.newInstance();3 DocumentBuilder builder;4 Document destDoc = null;5 FileInputStream input;6 try{7 builder =dbFac.newDocumentBuilder();8 destDoc =builder.parse(finalConfigXml);9 if(!finalConfigXml.exists())10 {11 finalConfigXml.createNewFile();12 }13 input = newFileInputStream(xslFile);14 StreamSource source = newStreamSource(input);15 Transformer transformer =TransformerFactory.newInstance().newTransformer(source);16 //为xsl文件设置变量"configXmlPath",将configXml文件的路径传递给xsl

17 transformer.setParameter("configXmlPath", configXml.getPath());18 transformer.transform(new DOMSource(destDoc), newStreamResult(finalConfigXml));19 }catch(Exception e) {20 e.printStackTrace();21 }22 }

二、XSL 文件

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

三、XSL 文件解析

1.Java 传入参数 “configXmlPath” 为 Config.xml 文件的路径

1

2.取出 Config.xml 文件中所有的 gameid,此处为增强处理,即 Config.xml 文件中可以存在多个 节点

1

2

3

4

5

6

7

8

9

3.判断 FinalConfig.xml 的 子节点中是否存在当前的 gameid ,若不存在则复制

1

2

3

4

5

4.复制 Config.xml 文件中的所有 节点

(本文系从原博客迁移至此,并进行部分编辑。原文链接:http://thewaychung.iteye.com/blog/2072740)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用说明 本软件用于快速处理大量EXCEL;csv;dbf文件合并、目录链接及数据汇总,帮助您整理文件,方便您的操作。适用于总部管理、统计、办公、财务、个人等处理文件时使用。不影响原文件内容和格式 一、当鼠标停在按钮键上时,会显示出相应的操作说明。每步操作在窗体上都有相应的提示。 二、[合并多个EXCEL;csv;dbf文件]: 1)、当您选择要合并文件时,请用SHIFT、CTRL键加鼠标或CTRL+A键选择文件。新表名以[原文件名]+[原表名]或[原表名]组成。 2)、新表名长度如超过15个汉字(EXCEL规定不准超过),将自动进行截取,并在前加上数字序号。 3)、合并文件后,不要关闭EXCEL,接着做第2步操作。 三、[合并文件建立目录及链接]: 1)、自动建立以表名或自定义的标题行建立目录及链接,并在每张表建立返回目录。 四、进行数据合并: 1)、表结构最好保持一致。 2)、进行数据合并时,合并的数据所有A1列不允许为空,为空表示最后一行数据。 3)、需合并的数据所有A1列不允许有合并单元格发生。 4)、详见[合并数据实例.xls]。 注意事项: 1)、当需处理文件数据存在数据链接,请点不更新按钮,或在EXCEL中的工具-选项-编辑将[请求自动更新]去掉。 2)、在合并数据时,当需处理文件数据存在数据链接,在编辑-链接中点[断开链接]。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值