jsoupライブラリを使用してHTMLメタタグを解析する 質問する

jsoupライブラリを使用してHTMLメタタグを解析する 質問する

Jsoup ライブラリをプロジェクトに使用しようと思い、調査を始めました。Google で検索してみましたが、役に立つ正確な答えは見つかりませんでした。問題は、以下のようなメタタグが付いた HTML ファイルがあることです。

<meta content="this is the title value" name="d.title">
<meta content="this is the description value" name="d.description">
<meta content="language is french" name="d.language">

そしてJava Pojoは次のようになります

public class Example {
    private String title;
    private String description;
    private String language;

    public Example() {}

    // setters and getters go here
} 

ここで、HTML ファイルを解析し、d.title のコンテンツ値を抽出して Example.title に保存し、d.description の「content」の値を抽出して Example.description に保存するなどしたいと思います。

私がjsoupクックブックを読んでやったことは、次のようなことです。

Document doc = Jsoup.parse("test.html");
Elements metaTags = doc.getElementsByTag("meta");

for (Element metaTag : metaTags) {
    String content = metaTag.attr("content");
    String content = metaTag.attr("name");
}

これは、すべてのメタタグを調べて、その「content」属性と「name」属性の値を取得しますが、私が望んでいるのは、「name」属性が「d.title」である「content」属性の値を取得して、それをExample.titleに保存することです。

アップデート:@PJMeischの回答は実際に問題を解決していますが、私の好みにはコードが多すぎます(まったく同じことを避けようとしていました)。つまり、次のようなことが可能かもしれないと考えていました。

文字列タイトル = metaTags.getContent("d.title")

ここで、d.title は「name」属性の値です。こうすることで、コード行数が減ります。私はそのような方法を見つけていませんが、それは私がまだ jsoup に慣れていないからかもしれません。だから質問したのです。しかし、そのような方法が存在しない場合は (あれば便利です。そうすれば作業が楽になります)、PJMeisch の言うとおりにします。

ベストアンサー1

全てのコードは次の通りです:

Document doc = Jsoup.parse("test.html");
Elements metaTags = doc.getElementsByTag("meta");

Example ex = new Example();

for (Element metaTag : metaTags) {
  String content = metaTag.attr("content");
  String name = metaTag.attr("name");

  if("d.title".equals(name)) {
    ex.setTitle(content);
  }
  if("d.description".equals(name)) {
    ex.setDescription(content);
  }
  if("d.language".equals(name)) {
    ex.setLanguage(content);
  }
}

おすすめ記事