2010-04-28 3 views
0

XML 파일을 ANT 빌드 스크립트에 전달하고 XML의 노드 구조를 모방 한 폴더 구조를 만들 수 있기를 원합니다. 빌드 파일 상위 디렉토리를 루트로 사용합니다. 사용 예를 들어ANT를 사용하여 XML 파일의 구조를 폴더 구조로 변환하는 방법

:

<root> 
    <folder1> 
     <folder1-1/> 
    </folder1> 
    <folder2/> 
    <folder3> 
     <folder3-1/> 
    </folder3> 
</root> 

개미 만들 것입니다 :

folder1 
    -folder1-1 
folder2 
folder3 
    -folder3-1 

나는 디렉토리를 생성하는 방법을 알고,하지만 난 ANT는 XML을 파싱하는 방법을 모르겠어요.

답변

1

하나의 옵션은 xslt 작업을 사용하여 과도한 작업을 수행하는 것입니다. 예를 들어, 두 번째 ant 스크립트를 생성하고 호출합니다.

의 build.xml :

다음 XSLT 작업에서

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:template match="text()"/> 

    <xsl:template match="root"> 
    <project><xsl:text>&#10;</xsl:text> 
     <xsl:apply-templates/> 
    </project> 
    </xsl:template> 

    <xsl:template match="*"> 
    <mkdir> 
     <xsl:attribute name="dir"> 
     <xsl:for-each select="ancestor::*"> 
      <xsl:if test="position() != 1"> 
      <xsl:value-of select="name()"/> 
      <xsl:text>/</xsl:text> 
      </xsl:if> 
     </xsl:for-each> 
     <xsl:value-of select="name()"/> 
     </xsl:attribute> 
    </mkdir><xsl:text>&#10;</xsl:text> 

    <xsl:apply-templates/> 
    </xsl:template> 
</xsl:transform> 

예 mkdir.build.xml 출력 : build.xml 파일로서 동일한 디렉토리에

<project default="mkdirs"> 
    <target name="mkdirs"> 
    <xslt style="mkdir.xslt" in="dirs.xml" out="mkdir.build.xml"/> 
    <ant antfile="mkdir.build.xml"/> 
    </target> 
</project> 

장소 mkdir.xslt

<?xml version="1.0" encoding="UTF-8"?><project> 
<mkdir dir="folder1"/> 
<mkdir dir="folder1/folder1-1"/> 
<mkdir dir="folder2"/> 
<mkdir dir="folder3"/> 
<mkdir dir="folder3/folder3-1"/> 
</project> 

저는 XSLT에 익숙하지 않아 for-each 루프를 개선 할 수 있습니다.

+0

감사합니다. 저건 완벽 해. – Undistraction