Разбор Xpath и CSS - PullRequest
       3

Разбор Xpath и CSS

2 голосов
/ 10 июня 2011

Можно ли использовать xpath, чтобы выяснить, содержит ли следующий html-документ элемент: hover или элемент размером 12?

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<style type="text/css">
a:link{
  color:#000;
}
a:hover{
  color:#333;
}
p{
  font-size:12px;
}
</style>
</head>
<body>
<a href="foo.com">some text here</a>
<p>some more text</p>
</body>

</html>

Любая помощь приветствуется,

Kay

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Вы не можете использовать XPath для недействительных документов XML, и этот недействителен. Однако вы можете использовать HtmlAgilityPack или что-то в этом роде для анализа HTML DOM и получения содержимого тега стиля. Затем вы должны выполнить какой-то пользовательский анализ CSS или поискать библиотеку, которая это делает.

1 голос
/ 10 июня 2011

Вы можете использовать xpath для не XML-документов, а CSS не является XML.Поэтому, если ваш стиль не в атрибутах HTML, вы не можете искать стиль (если браузер не преобразует стили CSS в атрибуты DOM, тогда это может сработать, возможно, кто-то что-то скажет по этому поводу).Мое предложение было бы использовать регулярное выражение для извлечения того, какие идентификаторы / классы / теги имеют желаемые атрибуты CSS, а затем использовать их в xpath.Однако для этого, скорее всего, вам понадобится многострочный режим регулярных выражений (не то чтобы это большая проблема, просто заметка).

Ну, на самом деле, теперь, когда я думаю об этом, вы можете выполнять поиск контента в тегах стиля, используя xpathно, тем не менее, вам все еще нужно разобрать этот контент, и я не думаю, что вы сделаете это успешно без регулярного выражения, поэтому я предлагаю пропустить регулярное выражение в шаге синтаксического анализа CSS.Или просто используйте xpath для сбора элементов скрипта и анализа их содержимого после этого, чтобы вам не приходилось анализировать весь HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...