Как указано в других ответах, вы не можете сделать это в «чистом» XML. Вам необходимо встроить язык программирования. Мой личный фаворит - Groovy, он отлично интегрируется с ANT .
Вот пример, который получает URL логотипа с главной страницы groovy:
parse:
print:
[echo]
[echo] Logo URL: http://groovy.codehaus.org/images/groovy-logo-medium.png
[echo]
build.xml
Сборка использует подключаемый модуль ivy для извлечения всех сторонних зависимостей.
<project name="demo" default="print" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="resolve">
<ivy:resolve/>
<ivy:cachepath pathid="build.path" conf="build"/>
</target>
<target name="parse" depends="resolve">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
<groovy>
import org.htmlcleaner.*
def address = 'http://groovy.codehaus.org/'
// Clean any messy HTML
def cleaner = new HtmlCleaner()
def node = cleaner.clean(address.toURL())
// Convert from HTML to XML
def props = cleaner.getProperties()
def serializer = new SimpleXmlSerializer(props)
def xml = serializer.getXmlAsString(node)
// Parse the XML into a document we can work with
def page = new XmlSlurper(false,false).parseText(xml)
// Retrieve the logo URL
properties["logo"] = page.body.div[0].div[1].div[0].div[0].div[0].img.@src
</groovy>
</target>
<target name="print" depends="parse">
<echo>
Logo URL: ${logo}
</echo>
</target>
</project>
Логика синтаксического анализа - это просто отличное программирование. Мне нравится, как вы можете легко пройтись по дереву DOM страницы:
// Retrieve the logo URL
properties["logo"] = page.body.div[0].div[1].div[0].div[0].div[0].img.@src
ivy.xml
Ivy похож на Maven. Он управляет вашими зависимостями от стороннего программного обеспечения. Здесь он используется для удаления Groovy и библиотеки HTMLCleaner, которую использует Groovy логика:
<ivy-module version="2.0">
<info organisation="org.myspotontheweb" module="demo"/>
<configurations defaultconfmapping="build->default">
<conf name="build" description="ANT tasks"/>
</configurations>
<dependencies>
<dependency org="org.codehaus.groovy" name="groovy-all" rev="1.8.2"/>
<dependency org="net.sourceforge.htmlcleaner" name="htmlcleaner" rev="2.2"/>
</dependencies>
</ivy-module>
Как установить плющ
Ivy - это стандартный плагин ANT. Загрузите флягу и поместите ее в один из следующих каталогов:
$HOME/.ant/lib
$ANT_HOME/lib
Я не знаю, почему проект ANT не поставляется с плющом.