0

複雑になりつつあるANT構成ファイルがありますが、問題が発生し続けています。タスクの1つは、Webサイトからページを取得し、それをファイルに保存します。そのようなファイルをロードし、そこから特定の要素のhref属性を抽出する必要があります。HTMLはかなり整形式ですが、保証することはできません。

私は正規表現を考えていましたが、要素の属性が常に同じ順序で表示されるとは限りません(たとえば、クラス名やID)。その上、属性自体なしで、href属性のを返す方法を知りませんでした。

ANTに追加するアドオンの数を制限しようとしているので、「自己完結型」のソリューションを歓迎します。ありがとう。

4

1 に答える 1

2

探している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="&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>
于 2012-06-18T22:17:29.260 に答える