2010-06-17 7 views
5

Je suis assez nouveau pour fourmi et j'ai regardé les tâches. J'essaie de générer un fichier XML. Ai-je besoin d'appeler un processus externe ou y a-t-il un moyen de le faire? Cela peut être aussi simple que d'envoyer une chaîne dans un fichier txt et de l'enregistrer au format .xml. C'est possible?Pouvez-vous utiliser Ant pour créer/modifier des fichiers XML?

+1

La tâche ['Replace'] (http://ant.apache.org/manual/Tasks/replace.html) n'est-elle pas suffisante pour ce que vous voulez faire? – tonio

+0

Merci, ces réponses sont très utiles. – sarcasteak

Répondre

5

La réponse dépend de ce que vous essayez de faire réellement.

Vous pouvez créer un minuscule document XML en utilisant le remplacement des tâches et des arguments echo, mais cela devient difficile à maintenir très rapidement.

Si votre objectif est de générer un document XML dont la plupart sont remplacés par un couple de valeurs, vous devez créer un document de modèle, puis utiliser la tâche Copy with filtering.

Si vous avez besoin de modifier la structure du document en fonction des données de Ant (ou d'une autre source), l'utilisation de la tâche xslt sera plus adaptée. Le problème avec XSLT est qu'il n'est pas toujours simple à utiliser (XSLT utilise la programmation fonctionnelle, pas la programmation procédurale).

Vous pouvez trouver que la bonne réponse est à write your own Ant task qui fera exactement ce que vous voulez, comme vous le souhaitez.

Si vous pouvez mieux décrire ce que vous essayez d'atteindre, je suis sûr que quelqu'un sera heureux de fournir une réponse plus précise.

+0

Merci, je suis allé avec la copie avec le filtrage, fonctionne très bien! – sarcasteak

+0

Juste une question «edge-case» - est-ce que la tâche «copy-with-filter» gère correctement les valeurs qui contiennent des caractères XML spéciaux (<, & etc? – monojohnny

+0

Copier avec le filtre est bête - tout ce qu'il fait est de copier des octets, avec une substitution de valeur. L'astuce consiste à définir les valeurs dans un fichier de construction XML. Si vous pouvez définir correctement les valeurs en premier lieu, copier-avec-filtre les remplacera correctement. –

1

Vous pourriez le faire, bien que cela me semble plus comme quelque chose que vous voudriez écrire au préalable, ou quelque chose que vous pourriez appeler à partir de Ant.

La tâche serait:

<echo file="my.xml"><!--put escaped xml here--></echo> 

Ceci est bien sûr va être fastidieux puisque tout doit être échappé, mais vous pouvez le faire.

4

Vous pouvez utiliser la tâche Replace pour remplacer une chaîne donnée dans un modèle et l'enregistrer en tant que xml. Un exemple simple, comme on le voit dans la documentation ant:

<replace file="${src}/index.html" token="@@@" value="wombat"/> 

Je l'ai utilisé pour remplacer un @[email protected] constant par l'identificateur de construction réelle dans un projet java, par exemple.

Si vous voulez faire un traitement plus complexe, vous devriez regarder la tâche XSLT. exemple Foe, pour générer des documents, avec le date substituons dans la sortie, vous pouvez utiliser quelque chose comme:

<xslt basedir="doc" destdir="build/doc" 
     extension=".html" style="style/apache.xsl"> 
    <param name="date" expression="07-01-2000"/> 
</xslt> 
10

Lorsque vous devez traiter tout type de traitement XML dans votre flux de travail ant, le xmltask est fortement recommandé. Documentation très détaillée et bon support. Tout ce dont vous avez besoin à côté est XPATH knowledge. Ici =>another helpful article

Questions connexes