我正在处理一个涉及。java,。xslt,。bat和。properties文件的任务。
思路:使用xslt将扩展名为tmx的基于xml的文件转换为txt文件。Java被用作一种媒介,连接.properties和xslt。在属性文件中,指定了一些参数。
xml> = abc.tmx xsl = aaa.xsl = bbb.txtbat文件作为启动器:
java -Xms512m -Xmx768m -DentityExpansionLimit=2000000 -classpath . transformations.TMXTransform
您可以想象,我必须为每个处理修改属性文件,只生成一个输出,这在效率方面并不理想。
现在我想有一个更好的解决方案。
所有文件在一个特定的位置与特定的扩展名被自动检测,说a.tmx, b.tmx, c.tmx....z.tmx
通过双击,相应的具有可定制文件名的txt输出文件(例如a_output.txt, b_output.txt…z_output.txt)被生成到指定位置。
我想这并不难,但是因为我是Java新手,我想知道是否有人可以帮助我。
顺便说一下,直接使用xslt也是可以的。
既然您不是Java向导,我想知道您在Ant或XProc中这样做是否会更好?两者都是基于xml的语言,允许您控制对选定文件的一系列转换。在我看来,您似乎正在尝试发明一种新的属性文件语法,它是用于XSLT处理的简单控制语言,而且您不需要这样做,因为已经存在几种。
或者另一个候选是xmlsh,一种用于控制XML处理任务的类似shellscript的语言。
尝试以另一种方式使用属性文件。创建一个自定义属性文件,其中每行表示一个处理作业,在其中指定所有需要的参数。您的程序应该读取属性文件的每一行,解析参数并处理文件。通过一次调用,您的程序可以处理自定义属性文件中定义的尽可能多的文件。为了读取属性文件,使用BufferedReader.readLine()
和StringTokenizer
或String.split()
来解析参数。
这只是一个想法。
根据Michael Kay的建议,您可以使用一个简单的ANT构建脚本,就像这样,来转换所有的*。tmx文件。
<project name="TranformXml" basedir="." default="TransformFiles">
<target name="TransformFiles">
<xslt basedir="${basedir}"
destdir="build"
style="transform.xsl"
includes="*.tmx"
extension="_output.txt">
</xslt>
</target>
</project>