2012-06-05 3 views
0

У меня есть файл конфигурации ANT, который становится сложным, и теперь я застрял в проблеме. Одна из задач извлекает страницу с веб-сайта и сохраняет ее в файл. Мне нужно загрузить такой файл и извлечь из него атрибут href определенного элемента. HTML достаточно хорошо сформирован, но я не могу этого гарантировать.Как извлечь атрибут из HTML-элемента с помощью Ant?

Я думал о RegEx, но атрибуты элемента не гарантируются всегда в одном порядке (например, его имя класса или id). Кроме того, я не узнал, как просто вернуть значение значение атрибута href без атрибута.

Я пытаюсь ограничить количество аддонов, добавляемых в ANT, поэтому было бы доступно «автономное» решение. Благодарю.

+0

возможно дубликат [ Анализ HTML-кода с помощью Ant Script] (http://stackoverflow.com/questions/7428855/parse-html-using-with-an-ant-script) –

ответ

2

Я не уверен, как вы собираетесь найти определенный HTML-элемент, который имеет href, который вы ищете (я бы предположил, проверяя атрибут id, но вы этого не сказали). Я собрал эту цепочку регулярных выражений, чтобы отфильтровать HTML до кандидатов-якорных тегов, а затем в конечном итоге вырезать только href's. Я использовал источник этой страницы в качестве образца ввода, и поскольку я не мог найти никаких атрибутов id, связанных с якорями (у которых также были hrefs), я отфильтровывался до якорей с классом = «вопрос-гиперссылка» - я надеюсь, что это может быть хорошей отправной точкой для вас (и заметьте: как вы предусмотрено, оно не содержит никаких зависимостей от дополнительных модулей и т.д., независимо от того, насколько легко они установить):

<?xml version="1.0" encoding="UTF-8"?> 
<project name="Test Html attribute" default="test" basedir="."> 
    <target name="test"> 

     <loadfile srcFile="ant.htm" property="html"> 
     <filterchain> 
      <linecontainsregexp> 
       <regexp pattern="&lt;a.*href[^&gt;]*&gt;"/> 
       <regexp pattern="&lt;a.*class=[&quot;']question-hyperlink[&quot;'][^&gt;]*&gt;"/> 
      </linecontainsregexp> 
      <tokenfilter> 
       <replaceregex pattern=".*&lt;a.*href=[&quot;']?([^&gt;&quot;']*).*&gt;[^&lt;]*" replace="\1" flags="gi"/> 
      </tokenfilter> 
     </filterchain> 
     </loadfile> 

     <echo>${html}</echo> 
    </target> 
</project> 
Смежные вопросы