2017-09-01 152 views
0

使用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. 

回答

0

而不是imageElement.absUrl("src");ü可以用imageElement.attr("src");

尝试