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。
私は間違っていますか?実際のファイルパスのみを取得し、コピーするファイルを見つけるにはどうすればよいですか?
'copy'タスクはファイルをコピーできます。なぜxmltask? – Rao
xmlファイルから(特定の属性にフィルタを含む)コピーするファイルを読み込む必要があるため、xmltaskを使用しようとしました。属性値がコピーされるべきでないファイルノードがあります。または、xmltaskを使わずにxmlファイルを読むことはできますか?アイデア? – Apollo102
コピーは、その前にbasedirエントリに従ってパスを常に作成します。 basedirのエントリを "。"以外のものに変更すると以前はプラグインフォルダを使用しなくなりました。 copySourcesFileのテスト出力をターゲットに入れると、実際にコピーされるファイル名が正しくターゲットに到着することがわかります。だから何かがコピー自体で起こる。しかし、私はこれを防ぐ方法を知らない。何か案が? – Apollo102