如何知道在Jsoup中Element类是空还是null

时间:2014-11-07 15:01:16

标签: java android jsoup

我尝试使用this网址中的Jsoup库收集文章列表的图像。

当文章没有嵌入图像时,我会使用标准图片。这是我的工作:

for(Element img : document.select(".rullo .rullo-item .lazy>a img[src]")) {
    String imageMainUrl = img.attr("src");
    if(img.attr("src") == null || img.attr("src").equals("") || 
           img.attr("src").isEmpty()){
        images.add(bmp);
    } else {
        String newString = imageMainUrl.replace("data:image/gif;base64,", "");
        byte[] decodedString = Base64.decode(imageMainUrl, Base64.DEFAULT);
        Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);                  
        images.add(bitmap);
    }                   
}

但问题是它永远不会进入if部分;如何知道元素是空还是空?谢谢!

3 个答案:

答案 0 :(得分:2)

这个怎么样:

for(Element img : doc.select(".rullo .rullo-item .lazy>a img[src]")) {
        String imageMainUrl = img.attr("data-src");
        URL imageurl = null;
        try {
            imageurl = new URL(imageMainUrl);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        final long imageSize = imageurl.openConnection().getContentLength();

        if(img.attr("src") == null || img.attr("src").equals("") ||
                img.attr("src").isEmpty() || imageSize > 0){
            images.add(bmp);
        } else {
            byte[] decodedString = Base64.decode(imageMainUrl, Base64.DEFAULT);
            Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
            images.add(bitmap);
        }
    }

我注意到实际的图片网址是在data-src下而不是src。

答案 1 :(得分:1)

我解决了我的问题! 这是代码:

for(Element picture : document.select(".rullo .rullo-item picture")) {
    Elements imageElement = picture.getElementsByClass("attachment-rullo");
    String imageUrl = imageElement.attr("data-src");
    if(imageUrl == null || imageUrl.equals("")){
        images.add(bmp);
    } else {
        try{
            InputStream input = new java.net.URL(imageUrl).openStream();
            Bitmap bitmap = BitmapFactory.decodeStream(input);
            images.add(bitmap);
        } catch (MalformedURLException e) {
            e.printStackTrace();
            images.add(bmp);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            images.add(bmp);
        }
    }
}

我能够通过选择图像的父级来解决我的问题:如果父级没有内容,则文章没有嵌入图片,否则会嵌入图片。

答案 2 :(得分:0)

尝试使用imageMainUrl打印Log.i("value",imageMainUrl);,您将遍历这样的问题。 并且还会从您获取图像的位置发布html DOM篇文章。