2010-06-17 14 views
5

Sono abbastanza nuovo per la formica e ho osservato i compiti. Sto cercando di generare un file xml. Devo chiamare un processo esterno o è necessario un modo per farlo? Potrebbe essere semplice come inviare una stringa in un file txt e salvarla come .xml. È possibile?È possibile utilizzare Ant per creare/modificare file XML?

+1

L'attività ['Replace'] (http://ant.apache.org/manual/Tasks/replace.html) è sufficiente per ciò che si desidera fare? – tonio

+0

Grazie, queste risposte sono tutte molto utili. – sarcasteak

risposta

5

La risposta corretta dipende da cosa si sta effettivamente cercando di fare.

È possibile creare un documento xml minuscolo usando la sostituzione di argomento e argomento echo, ma è difficile mantenerlo molto rapidamente.

Se il tuo obiettivo è quello di generare un documento XML che è per lo più boilerplate con un paio di valori sostituiti, allora dovresti cercare di creare un documento modello e quindi usare l'attività Copy with filtering.

Se è necessario modificare la struttura del documento in base ai dati di Ant (o raccolti da qualche altra parte), quindi utilizzare l'attività xslt sarà una soluzione migliore. Il problema con XSLT è che non è sempre semplice da usare (XSLT usa la programmazione funzionale, non la programmazione procedurale).

Potreste scoprire che la risposta corretta è write your own Ant task che farà esattamente quello che volete, proprio nel modo in cui lo volete.

Se riesci a descrivere meglio cosa stai cercando di ottenere, sono sicuro che qualcuno sarà felice di fornire una risposta più precisa.

+0

Grazie, sono andato con la copia con il filtro, funziona molto bene! – sarcasteak

+0

Solo una domanda 'bordo-caso': l'attività 'copia-con-filtro' gestisce correttamente i valori che contengono caratteri XML speciali (<, & etc?) – monojohnny

+0

Copia con filtro è stupida - tutto ciò che fa è copiare byte, con sostituzione del valore. Il trucco sta nel definire i valori all'interno di un file di build XML. Se è possibile definire correttamente i valori in primo luogo, copy-with-filter li sostituirà correttamente. –

1

Si potrebbe farlo, anche se mi sembra più come qualcosa che si vorrebbe sceneggiare in anticipo, o qualcosa che si potrebbe chiamare da Ant.

Il compito sarebbe:

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

Questo è naturalmente andare a essere noioso in quanto tutto deve essere sfuggito, ma si può fare.

4

È possibile utilizzare l'attività Replace per sostituire una determinata stringa in un modello e salvarla come xml. Un semplice esempio, come si vede nella documentazione formica:

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

ho usato per sostituire una costante @[email protected] dall'identificativo costruzione attuale in un progetto Java, per esempio.

Se si desidera eseguire un'elaborazione più complessa, è necessario esaminare l'attività XSLT. Foe esempio, per generare la documentazione, con il date sostituire in uscita, è possibile usare qualcosa come:

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

Quando si ha a che fare con qualsiasi tipo di elaborazione XML all'interno del proprio flusso di lavoro, si consiglia vivamente lo xmltask. Documentazione molto dettagliata e buon supporto. Tutto ciò di cui hai bisogno a fianco è lo XPATH knowledge. Qui =>another helpful article

Problemi correlati