这是我要解析的HTML:
<div class="entry">
<img src="http://www.example.com/image.jpg" alt="Image Title">
<p>Here is some text</p>
<p>Here is some more text</p>
</div>
我想将<p>
中的文本放到一个ArrayList中。我已经尝试过使用Jsoup了。
Document doc = Jsoup.parse(line);
Elements descs = doc.getElementsByClass("entry");
for (Element desc : descs) {
String text = desc.getElementsByTag("p").first().text();
myArrayList.add(text);
}
但这根本不起作用。我对Jsoup很新,但它似乎有其局限性。如果我可以使用Jsoup将<p>
中的文本放到一个ArrayList中,我该如何实现呢?如果我必须使用其他方法来解析HTML,请告诉我。
我正在使用BufferedReader
一次读取一行html文件。
答案 0 :(得分:1)
您可以将方法更改为以下内容:
Document doc = Jsoup.parse(line);
Elements pElems = doc.select("div.entry > p");
for (Element pElem : pElems) {
myArrayList.add(pElem.data());
}
答案 1 :(得分:1)
不确定为什么要逐行阅读html。但是,如果您想阅读整个HTML,请使用以下代码:
String line = "<div class=\"entry\">" +
"<img src=\"http://www.example.com/image.jpg\" alt=\"Image Title\">" +
"<p>Here is some text</p>" +
"<p>Here is some more text</p>" +
"</div>";
Document doc = Jsoup.parse(line);
Elements descs = doc.getElementsByClass("entry");
List<String> myArrayList = new ArrayList<String>();
for (Element desc : descs) {
Elements paragraphs = desc.getElementsByTag("p");
for (Element paragraph : paragraphs) {
myArrayList.add(paragraph.text());
}
}
答案 2 :(得分:0)
在for
- 循环中:
Elements ps = desc.select("p");
(http://jsoup.org/apidocs/org/jsoup/nodes/Element.html#select(java.lang.String))
答案 3 :(得分:0)
试试这个:
Document doc = Jsoup.parse(line);
String text = doc.select("p").first().text();