0

我有一个这样的 xml 文件(myxml.xml)

<fileset dir ="C:\dir1">
    <include name="abc.txt">
    <include name ="def.txt">
</fileset>
<fileset dir ="C:\dir2">
    <include name="abc2.txt">
    <include name ="def2.txt">
</fileset>

我想使用我的 Ant build.xml 解析这个文件,并希望创建两个 txt 文件,比如 text1.txt 和 text2.txt,内容如下

text1.txt

C:\dir1\abc.txt
C:\dir1\def.txt

text2.txt应该有

C:\dir2\abc2.txt
C:\dir2\def2.txt

知道我怎么能做到这一点:)

4

2 回答 2

0

如果您可以选择<fileset>在 build.xml 文件中包含标签,您可以创建包含文件集内容的文本文件,如下所示。

<target name="create-text1">
  <fileset dir="C:\dir1" id="dir1.files">
    <include name="abc.txt" />
    <include name ="def.txt" />
  </fileset>
  <pathconvert pathsep="${line.separator}"
      property="text1" refid="dir1.files"/>
  <echo file="text1.txt" message="${text1}" />
</target>

<target name="create-text2">
  <fileset dir="C:\dir2" id="dir2.files">
    <include name="abc2.txt" />
    <include name ="def2.txt" />
  </fileset>
  <pathconvert pathsep="${line.separator}"
      property="text2" refid="dir2.files"/>
  <echo file="text2.txt" message="${text2}" />
</target>
于 2012-09-11T16:25:18.123 回答
0

尝试这个:

构建文件:

<project default="createfile2">
<target name="createfile1">
    <xslt in="myxml.xml" out="text1.txt" style="test1.xslt">
        <param name="d" expression="C:\dir1"/>
    </xslt>
</target>

    <target name="createfile2" depends="createfile1">
    <xslt in="myxml.xml" out="text2.txt" style="test1.xslt">
        <param name="d" expression="C:\dir2"/>
    </xslt>
</target>
</project>

XSLT 转换

<?xml version="1.0" standalone="yes"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:param name="d"/>
 <xsl:output omit-xml-declaration="yes" method="html"  indent="no"/>
 <xsl:strip-space elements="*"/>
<xsl:template match="/root/fileset[@dir=$d]">
    <xsl:for-each select="include">
        <xsl:value-of select="$d"/>\<xsl:value-of select="@name"/>
<xsl:text>
</xsl:text>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

输出文件

text1.txt

C:\dir1\abc.txt
C:\dir1\def.txt

text2.txt

C:\dir2\abc2.txt
C:\dir2\def2.txt
于 2012-09-11T19:25:58.777 回答