2017-05-01 12 views
0

I次のXMLファイルを持っている:アリxmltaskコピーファイル

<?xml version="1.0"?> 
<job> 
<files> 
     <file src="file:\C:\tmp\myfile.xml" path="myfile.xml" format="dita"/> 
     <file src="file:\C:\tmp\myfile2.xml" path="myfile2.xml" format="dita"/> 
</files> 
</job> 

私はxmlファイルの内容を読み取るためのAntスクリプトを使用しようとすると、対応するファイルをコピーしたいと思います。ここに私の蟻スクリプトです:

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

<project name="TPreProcess" default="start" basedir="." > 
<target name="start"> 
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/> 

<xmltask source="${basedir}${file.separator}.job.xml" report="false" > 

    <call path="//job/files/file[@format='dita' or @format='ditamap' ]" target="copy-xml" buffer="abc"> 
      <param name="copySourcesFile" path="@src"/> 
    </call> 

</xmltask> 
</target> 


<target name="copy-xml" depends="" unless="" description="copy xml files"> 
<copy file="${copySourcesFile}" todir="C:${file.separator}tmp${file.separator}test_dita${file.separator}" failonerror="false" flatten="true"/> 
</target> 
</project> 

antスクリプトは、プラグインフォルダにあります。実行されたantファイルのログファイルには、コピーされるファイルが見つからないことが常に示されます。彼は常にプラグインフォルダをその前に置くことがわかります。


コピー-XML:

[コピー]警告:ファイルQが見つかりませんでした:\ DITA \ディータ・オープン・ツールキット\プラグイン\ com.xxxxx.dita.tran.process \ファイル:\コピーするC:\ tmp \ myfile.txt。


私は間違っていますか?実際のファイルパスのみを取得し、コピーするファイルを見つけるにはどうすればよいですか?

+0

'copy'タスクはファイルをコピーできます。なぜxmltask? – Rao

+0

xmlファイルから(特定の属性にフィルタを含む)コピーするファイルを読み込む必要があるため、xmltaskを使用しようとしました。属性値がコピーされるべきでないファイルノードがあります。または、xmltaskを使わずにxmlファイルを読むことはできますか?アイデア? – Apollo102

+0

コピーは、その前にbasedirエントリに従ってパスを常に作成します。 basedirのエントリを "。"以外のものに変更すると以前はプラグインフォルダを使用しなくなりました。 copySourcesFileのテスト出力をターゲットに入れると、実際にコピーされるファイル名が正しくターゲットに到着することがわかります。だから何かがコピー自体で起こる。しかし、私はこれを防ぐ方法を知らない。何か案が? – Apollo102

答えて

0

私はそれがこのように実行しました:

<xmltask source="${basedir}${file.separator}.job.xml" report="false"> 

<call path="//job/files/file[@format='dita' or @format='ditamap' ]" target="copy-xml" buffer="abc"> 
<param name="copySourcesFile" path="@src"/> 

</call> 


<target name="copy-xml" depends="" unless="" description="copy xml files" > 

<property name="copySourcesFile" value="${copySourcesFile}" /> 

<basename property="file.basename" file="${copySourcesFile}"/> 
<dirname property="path.dirname" file="${copySourcesFile}"/> 

<pathconvert property="file.path.stripped"> 
     <file file="${path.dirname}" /> 
     <!-- path convert strips off the leading ${basedir} and "\file\:" --> 
     <map from="${basedir}\file:\" to="" /> 
</pathconvert> 
<copy todir="C:${file.separator}tmp${file.separator}" failonerror="false"> 
<fileset dir="${file.path.stripped}"> 
<include name="${file.basename}" /> 
</fileset> 
</copy> 
</target> 

しかし、私はこれは良いsulutionであるかどうかわからないです。これに対するコメント?どのようにそれが良いでしょうか?