刚开始探索 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/