我有一个变得复杂的ANT配置文件,现在我遇到了问题。其中一个任务从网站检索页面并将其保存到文件中。我需要加载这样的文件并从中提取特定元素的 href 属性。 HTML格式合理,但我无法保证。
我在考虑使用RegEx,但不保证元素的属性总是以相同的顺序出现(例如,它的类名或id)。此外,我还没有找到如何只返回 href 属性的值,而没有属性本身。
我正在尝试限制要添加到ANT的插件数量,因此欢迎使用“自包含”解决方案。感谢。
答案 0 :(得分:2)
我不确定你将如何找到具有你正在寻找的href的特定HTML元素(我假设通过检查id属性,但你没有这么说)。我把这个正则表达式链放在一起,将HTML过滤到候选锚标签,然后最终剥离出href的。我使用此页面的源代码作为我的示例输入,因为我找不到任何与锚点相关联的id属性(也有hrefs),我使用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>