2010-06-17 13 views
5

Jestem całkiem nowy dla mrówki i patrzę na zadania. Próbuję wygenerować plik xml. Czy muszę wywoływać proces zewnętrzny lub czy mrówka ma jakiś sposób to zrobić? Może to być tak proste, jak wysłanie ciągu znaków do pliku txt i zapisanie go jako .xml. Czy to możliwe?Czy możesz używać Ant do budowania/modyfikowania plików XML?

+1

Czy zadanie ['Zamień'] (http://ant.apache.org/manual/Tasks/replace.html) nie wystarcza do tego, co chcesz zrobić? – tonio

+0

Dzięki, te odpowiedzi są bardzo przydatne. – sarcasteak

Odpowiedz

5

Prawidłowa odpowiedź zależy od tego, czego faktycznie zrobić.

Można utworzyć mały dokument XML przy użyciu zadania echo i wymiany argumentów, ale to bardzo trudne do utrzymania bardzo szybko.

Jeśli Twoim celem jest wygenerowanie dokumentu XML, który jest w większości oparty na tablicy z kilkoma podstawionymi wartościami, powinieneś spojrzeć na tworzenie dokumentu szablonu, a następnie użyć zadania Copy with filtering.

Jeśli chcesz zmodyfikować strukturę dokumentu w zależności od danych z Ant (lub zebranych z innego miejsca), to lepiej będzie użyć zadania xslt. Problem z XSLT polega na tym, że nie zawsze jest on prosty w użyciu (XSLT wykorzystuje funkcjonalne programowanie, a nie programowanie proceduralne).

Może się okazać, że poprawną odpowiedzią jest write your own Ant task, która zrobi dokładnie to, czego chcesz, dokładnie tak, jak chcesz.

Jeśli możesz lepiej opisać, co chcesz osiągnąć, jestem pewien, że ktoś z przyjemnością udzieli bardziej precyzyjnej odpowiedzi.

+0

Dzięki, poszedłem z kopiowaniem z filtrowaniem, działa bardzo ładnie! – sarcasteak

+0

Po prostu pytanie o "krawędzie" - czy zadanie "kopiuj z filtrem" poprawnie obsługuje wartości zawierające specjalne znaki XML (<, itd.?) – monojohnny

+0

Kopiowanie z filtrem jest głupie - wszystko, co robi, to kopiowanie bajtów z podstawieniem wartości. Sztuczka polega na tym, że definiujesz wartości wewnątrz pliku kompilacji XML. Jeśli możesz poprawnie zdefiniować wartości w pierwszej kolejności, funkcja copy-with-filter zastąpi je dobrze. –

1

Możesz to zrobić, chociaż wydaje mi się, że jest to coś, co chciałbyś wcześniej napisać lub coś, do czego możesz zadzwonić z Anta.

zadaniem byłoby:

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

Jest to oczywiście będzie to uciążliwe, ponieważ wszystko musi być uciekł, ale można to zrobić.

4

Możesz użyć zadania Replace, aby zastąpić dany ciąg w szablonie i zapisać go jako xml. Prosty przykład, jak widać na ant dokumentacji:

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

użyłem go zastąpić stałą @[email protected] przez rzeczywisty identyfikator kompilacji w projekcie java, na przykład.

Jeśli chcesz wykonać bardziej złożone przetwarzanie, powinieneś spojrzeć na zadanie XSLT. Foe przykład, do generowania dokumentacji, z date wymienić na wyjściu, można użyć coś takiego:

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

Kiedy masz do czynienia z jakimkolwiek przetwarzaniem XML w ramach swojego przepływu pracy z mrówkami, zdecydowanie zaleca się xmltask. Bardzo szczegółowa dokumentacja i dobre wsparcie. Wszystko, czego potrzebujesz, to około XPATH knowledge. Tutaj =>another helpful article

Powiązane problemy