我有一个越来越复杂的 ANT 配置文件,现在我遇到了一个问题。其中一项任务从网站检索页面并将其保存到文件中。我需要加载这样的文件并从中提取特定元素的href属性。HTML 格式合理,但我不能保证。
我在想一个正则表达式,但不能保证元素的属性总是以相同的顺序出现(例如它的类名或 id)。此外,我还没有找到如何只返回href属性的值,而没有属性本身。
我正在尝试限制要添加到 ANT 的插件数量,因此欢迎使用“自包含”解决方案。谢谢。
我不确定您将如何找到具有您要查找的 href 的特定 HTML 元素(我假设通过检查 id 属性,但您没有这么说)。我将这条正则表达式链放在一起,将 HTML 过滤为候选锚标记,然后最终只去除 href。我使用这个页面的源作为我的示例输入,因为我找不到任何与锚相关联的 id 属性(也有 href),我过滤到带有 class="question-hyperlink" 的锚——我是希望这对您来说是一个很好的起点(请注意:正如您所规定的,它不包含对其他模块等的任何依赖项,无论它们安装起来多么容易):
<?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="<a.*href[^>]*>"/>
<regexp pattern="<a.*class=["']question-hyperlink["'][^>]*>"/>
</linecontainsregexp>
<tokenfilter>
<replaceregex pattern=".*<a.*href=["']?([^>"']*).*>[^<]*" replace="\1" flags="gi"/>
</tokenfilter>
</filterchain>
</loadfile>
<echo>${html}</echo>
</target>
</project>