有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Differenticate<img>不带“alt”,而<img>带空的“alt”属性和JSoup

我有一个方法,它试图统计没有任何alt属性(甚至没有alt='')的图像

private int countImagesWithoutAlt(String page){
    int nbImages = 0;
    int nbImagesWithoutAlt = 0;
    try {
        Document dom = Jsoup.connect(page).get();
        Elements images = dom.getElementsByTag("img");
        nbImages = images.size();
        for (Element image : images) {
            if(image.attr("alt") == null){
                nbImagesWithoutAlt ++;
            }
        }
        return nbImagesWithoutAlt ;
    } catch (IOException e) {
        System.out.println("Problem on " + page + " : " + e);
        return 0;
    }
}

问题是,即使我有<img src="blabla"/>,条件image.attr("alt") == null也是假的。怎么会?我如何修复这个代码

非常感谢

对于那些想知道我为什么要在没有“alt”和“alt”属性为空的情况下进行差异化的人。在我的上下文(可访问性测试)中,“alt”属性是否为空并不总是重要的。这可能意味着图像只是装饰性的,不需要描述。但是,如果根本没有“alt”属性,屏幕阅读器可能会说“image”,这与使用它的人无关


共 (1) 个答案

  1. # 1 楼答案

    好吧,我找到了办法

    private String countImagesWithoutAlt(String page){
        try {
            Document dom = Jsoup.connect(page).get();
            Elements images = dom.getElementsByTag("img");
            int nbImages = images.size();
            Elements imagesWithoutAlt = dom.getElementsByTag("img").not("[alt]");
            int nBImagesWithoutAlt = imagesWithoutAlt.size();
            return page + "," + nbImages + "," + nBImagesWithoutAlt;
        } catch (IOException e) {
            System.out.println("Problem on " + page + " : " + e);
            return null;
        }
    }
    

    有趣的是:

    Elements imagesWithoutAlt = dom.getElementsByTag("img").not("[alt]");