0

私は自分のプログラムでいくつかのことを達成するのに苦労しています。誰かが助けてくれることを願っています。

HTMLページのソースコードを含む文字列があります。

私がやりたいのは、次のHTMLのすべてのインスタンスを抽出し、それを配列に配置することです。

<img src="http://*" alt="*" style="max-width:460px;">

したがって、上記と同様の値を含むXサイズの配列が作成され、明らかにsrc属性とalt属性が更新されます。

これは可能ですか?XMLパーサーがあることは知っていますが、フォーマットは常に同じです。

どんな助けでも大歓迎です。

4

2 に答える 2

1

を取得すると、配列は正規表現検索で見つかったALTのすべてのインスタンスを保持するのに十分な大きさではないArrayIndexOutOfBoundsException可能性があります。この場合、サイズがゼロの配列である可能性があります。StringimageTitles

于 2012-09-24T20:53:32.537 に答える
1

ArrayList一致するものがいくつあるかわからないように見えるので、静的配列の代わりに使用することをお勧めします。

また、HTML用の正規表現を使用することはお勧めできませんが、タグが常に同じ形式を使用していることが確実な場合は、次のことをお勧めします。

Pattern pattern = Pattern.compile(".*<img src=\"http://(.*)\" alt=\"(.*)\"\\s+sty.*>", Pattern.MULTILINE);

次に例を示します。

public static void main(String[] args) throws Exception {
        String web;
        String result = "";
        for (int i = 0; i < 10; i++) {
            web = "<img src=\"http://image" + i +".jpg\" alt=\"Title of Image " + i + "\" style=\"max-width:460px;\">";
            result += web + "\n";
        }
        System.out.println(result);
        Pattern pattern = Pattern.compile(".*<img src=\"http://(.*)\" alt=\"(.*)\"\\s+sty.*>", Pattern.MULTILINE);

        List<String> imageSources = new ArrayList<String>();
        List<String> imageTitles = new ArrayList<String>();

        Matcher matcher = pattern.matcher(result);
        while (matcher.find()) {
            String imageSource = matcher.group(1);
            String imageTitle = matcher.group(2);
            imageSources.add(imageSource);
            imageTitles.add(imageTitle);

        }

        for(int i = 0; i < imageSources.size(); i++) {
            System.out.println("url: " + imageSources.get(i));
            System.out.println("title: " + imageTitles.get(i));

        }
    }
}
于 2012-09-24T21:00:46.087 に答える