Я пытаюсь получить атрибут Style из тега div HTML с помощью Jsoup. См. ниже мой тег div.
<div id = "badge" class = "er-badge" style = "width: 576px; height: 369px; background: url("http://localhost:1020/er/ERImg/firmUploads/13854/LogoImg4.png") 0% 0% / cover no-repeat; z-index: 1; position: relative;" tabindex = "0" data-preview-purposes = "checked">
из этого стиля тега div я хочу извлечь только атрибут background:. Я могу получить все свойства стиля, используя код ниже
String style = Element.attr("style");
Но я хочу получить из этого только значение фонового атрибута. Можно ли извлечь это с помощью Jsoup или скажите, пожалуйста, любой другой простой способ извлечь атрибут. Заранее спасибо.




Рад видеть этот вопрос вместо того, чтобы кто-то пытался использовать Regex для разбора вручную.
Точно так же, как мы не должны парсить html самостоятельно, парсинг CSS вручную также нежелателен.
Уже есть доступная библиотека — cssparser htmlunit-cssparser для выполнения этой работы. Мы можем получить значение CSS background, как показано ниже:
import org.htmlunit.cssparser.dom.CSSStyleDeclarationImpl;
import org.htmlunit.cssparser.parser.CSSOMParser;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import java.io.IOException;
public class ParseStyle {
public static void main(String[] args) throws IOException {
Element e = Jsoup.parseBodyFragment("""
<div id = "badge" class = "er-badge" style = "width: 576px; height: 369px; background: url("http://localhost:1020/er/ERImg/firmUploads/13854/LogoImg4.png") 0% 0% / cover no-repeat; z-index: 1; position: relative;" tabindex = "0" data-preview-purposes = "checked">
""");
String style = e.select("div").attr("style");
CSSOMParser parser = new CSSOMParser();
CSSStyleDeclarationImpl decl = parser.parseStyleDeclaration(style);
System.out.println(decl.getPropertyCSSValue("background"));
}
}
Вы используете версию 0.9.30? mvnrepository.com/artifact/net.sourceforge.cssparser/cssparser/…
версия 0.9.23... Я мог видеть SACParserCSS3.class в этом файле Jar, когда я извлекал этот jar. Тогда почему я не мог использовать это?
Я не вижу никаких проблем с использованием обеих версий, я нашел более активно поддерживаемую библиотеку для синтаксического анализа CSS и обновил свой ответ, посмотрите, работает ли она для вас.
В отредактированном коде используется mvnrepository.com/artifact/org.htmlunit/htmlunit-cssparser
samabcde - Спасибо за ваше предложение, я попытался реализовать код, но не смог увидеть новый SACParserCSS3(), я могу импортировать только новый SACParser(). Я не мог использовать SACParserCSS3 в своем приложении. Я использую мавен.