#c#
#c#
Вопрос:
Я пытаюсь получить поле select HTML из моего приложения на C #.
HTML, который может быть введен, выглядит следующим образом…
<HTML>
<BODY BGCOLOR="#123456">
HELLO
</BODY>
</HTML>
Этот HTML может измениться в любое время, часть HTML, которую я хочу, — это значение для BGCOLOR, например #123456
или это может быть «белый», или «красный», и т.д…
Как я могу это сделать?
Я не думаю, что substring будет работать, поскольку я не могу предсказать, какой длины будет поле.
Спасибо
Комментарии:
1. Попробуйте поискать на сайте «Синтаксический анализ C # HTML» или «Очистка C # HTML», вы получите сотни ответов, которые гласят: htmlagilitypack.codeplex.com
Ответ №1:
вы можете использовать Html Agility Pack для синтаксического анализа HTML.
Итак, синтаксический анализ чего-то вроде BGCOLOR
может выглядеть следующим образом:
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(someHtml);
var body = htmlDoc.DocumentNode.SelectSingleNode("//body");
string bgColor = body.Attributes["bgcolor"].Value;
Ответ №2:
Вам нужно использовать запрос XPath.
смотрите http://support.microsoft.com/kb/308333
Загрузите HTML-код в XML-документ и запросите его, используя «HTML/BODY@BGCOLOR».
Комментарии:
1. HTML, указанный в вопросе, допустим, однако, если бы HTML был недопустимым, я думаю, вы столкнулись бы с исключениями при попытке загрузить его в
XmlDocument
.2. html не является допустимым xml. Во-первых, он не чувствителен к регистру. Другой заключается в том, что закрывающие теги не требуются