3

我需要解析 HTML 并找到相应的 CSS 样式。我可以单独解析 HTML 和 CSS,但我不能将它们结合起来。例如,我有一个这样的 XHTML 页面:

<html>
<head>
<title></title>
</head>
<body>
<div class="abc">Hello World</div>
</body>
</html>

我必须搜索“hello world”并找到它的类名,然后我需要从外部 CSS 文件中找到它的样式。使用 Java、JavaScript 和 PHP 的答案都可以。

4

4 回答 4

2

在 java 中使用jsoup库,它是一个 HTML 解析器。例如,您可以在此处
查看例如,您可以执行以下操作:

String html="<<your html content>>";
Document doc = Jsoup.parse(html);
Element ele=doc.getElementsContainingOwnText("Hello World").first.clone(); //get tag containing Hello world
HashSet<String>class=ele.classNames(); //gives you the classnames of element containing Hello world

您可以进一步探索图书馆以满足您的需求。

于 2012-11-28T22:06:44.867 回答
0

类似的问题jQuery 可以获取与元素关联的所有 CSS 样式吗?. 也许 css 优化器可以做你想做的事,看看used-css.com它的在线工具,但也列出了其他工具。

于 2012-11-28T21:56:39.443 回答
0

As i understood you have chance to parse style sheet from external file and this makes your task easy to solve. First try to parse html file with jsoup which supports jquery like selector syntax that helps you parse complicated html files easier. then check this previous solution to parse css file. Im not going to full solution as i state with these libraries all task done internally and the only thing you should do is writing glue code to combine these two.

于 2012-11-28T22:02:01.687 回答
0

使用 Java java.util.regex

String s = "<body>...<div class=\"abc\">Hello World</div></body>";
    Pattern p = Pattern.compile("<div.+?class\\s*?=\\s*['\"]?([^ '\"]+).*?>Hello World</div>", Pattern.CASE_INSENSITIVE);    Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group(1));
}

打印 abc

于 2012-11-28T21:41:20.490 回答