使用Jsoup解析HTML元素
问题描述:
使用Jsoup,我一直试图解析文章并通过以编程方式创建TextView和ImageView来在Android应用中显示它。我试图避免在Android Studio中使用WebView布局,因为它不提供太多的自定义。使用TextView,我可以设置应用程序的行为,如我所愿。使用Jsoup解析HTML元素
问题是我应该得到文章元素完全按照的顺序,并按顺序显示它。
文章可能看起来像这样(简化要求的缘故)
<h2>Lorem ipsum</h2>
<p>Lorem ipsum 2</p>
<p>Lorem ipsum 3</p>
<p><img src="blabla.jpg"/></p>
<p>Lorem ipsum Lorem ipsum Lorem ipsum</p>
<strong>Dolor si amette</strong>
<p><img src="abc.png"/><br/>Source : ABC Pte. Ltd.</p>
结构不会是每篇文章相同。也许在一些其他物品,这会是这样
<p><img src="blabla.jpg"/></p>
<p>Lorem ipsum 2</p>
<p>Lorem ipsum 3</p>
<h2>Lorem ipsum</h2>
<p><img src="abc.png"/><br/>Source : ABC Pte. Ltd.</p>
<strong>Dolor si amette</strong>
请告诉我重要的是,每当孤单的形象,我应该得到的图像的URL,当有文字,我应该得到的文本。
我试着迭代每个p标记并寻找图像或文本。
Document jsoupParse = Jsoup.parse(html);
Elements paragraph = jsoupParse.getElementsByTag("p");
int sizeJsoup = jsoupParse.getElementsByTag("p").size();
System.out.println("Size of P tag = "+sizeJsoup);
for(Element element:paragraph){
if(element.hasText()){
System.out.println("Text:"+element.text());
}else{
Elements image = element.getElementsByTag("img");
for(Element imageElement:image){
System.out.println("Image URL : "+imageElement.absUrl("src"));
}
}
}
遗憾的是它并没有考虑标题标签,它只是抓住文本的情况下,像
<p><img src="abc.png"/><br/>Source : ABC Pte. Ltd.</p>
只得到下面的文字而不是图像URL过。
Source : ABC Pte. Ltd.
答
而不是imageElement.absUrl("src");
ü可以用imageElement.attr("src");