java - 使用 jsoup 库解析 html 元标记

标签 java html html-parsing jsoup

刚开始探索 Jsoup 库,因为我将在我的一个项目中使用它。我尝试使用谷歌搜索,但找不到可以帮助我的确切答案。这是我的问题,我有一个带有如下元标记的 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 值中并存储在 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");
}

这样做是遍历所有元标记获取其“内容”和“名称”属性的值,但我想要的是获取其“名称”属性为“d”的“内容”属性的值.title"这样我就可以将它存储在 Example.title

更新: @P.J.Meisch 下面的回答实际上解决了这个问题,但我喜欢的代码太多了(试图避免做完全相同的事情)。我的意思是我认为可以做类似的事情

字符串标题 = metaTags.getContent("d.title")

其中 d.title 是“name”属性的值 这样它将减少代码行,我还没有找到这样的方法,但也许那是因为我对 jsoup 还是新手,这就是我问的原因。但是,如果不存在这样的方法(如果它确实存在就好了,因为它会让生活更轻松),我会选择 P.J.Meisch 所说的。

最佳答案

好的,所有的代码:

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);
  }
}

关于java - 使用 jsoup 库解析 html 元标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591685/

相关文章:

java - 事务交替超时

Java忽略数据库中的NullPointerException?

javascript - jQuery 字段选择

jQuery html() 使用 ?_=1365695139815 获取 Javascript (.js)

html - 为什么在 'new line' 或 'POST' 请求后 django 模板中缺少一个 'GET'?

java - 无法在Win7 cmd中运行已编译的.class java文件

java - 在基于ARM的lubuntu linux上运行LibGDX游戏?

html - 从 HTML5 规范中删除了 HGROUP 元素。可以使用什么替代技术来代替?

jquery - 在视口(viewport)中垂直居中旋转的 div(窗口高度)

python - 使用 lxml/ElementTree 获取非连续文本