Как бы мне получить небольшой фрагмент HTML-кода из строки? C#

#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. Во-первых, он не чувствителен к регистру. Другой заключается в том, что закрывающие теги не требуются