在 Android Studio 中使用 Jsoup 删除背景图片

Remove Background Image with Jsoup in Android Studio

我使用 WebView 和 Jsoup 构建应用程序以删除具有唯一 ID 或 Class 的元素。但是我在使用 Jsoup 删除背景图像时遇到了问题。这是我使用 Jsoup 删除背景图片的代码。

private class MyAsyncTask extends AsyncTask<Void, Void, Document> {

    @Override
    protected Document doInBackground(Void... voids) {
        String url = "https://www.mywebsite.com/";

        Document document = null;
        try {
            document = Jsoup.connect(url).get();

            document.getElementsByAttribute("url(\"https://www.mywebsite.com/assets/style/lapor/images/body-background.jpg\")").remove();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return document;
    } }

谢谢。

查看getElementsByAttribute方法的JavaDoc。它期望属性的 名称 作为参数,但您提供的是 css 属性 的值。这是非常错误的,它不会起作用。

此外,Jsoup 是一个用于 HTML 的库。这意味着您可以阅读、遍历和操作文档的 DOM 树,但不能阅读它的样式。我认为不支持按样式查询元素。

但是您可以通过以下方式满足您的要求:

  • 查询带有背景图片的元素(不过你需要提前知道哪些元素需要修改)。
  • 向它们添加 style 属性,覆盖 background-image 规则。

对于您提供的情况,当您替换行时它应该可以工作:

document.getElementsByAttribute("url(\"https://www.mywebsite.com/assets/style/lapor/images/body-background.jpg\")").remove();

... 到以下内容:

document.body().attr("style", "background-image: none;")