2012-03-29 4 views
0

мне нужно разделить эту строку/аналогичную добиться от VALUEПолучить содержимое HTML тега с помощью синтаксического анализа

<a href="javascript:void(0);" id="def_" name="color" rel="ml">VALUE</a> 

я могу сделать String.split («>»), а затем другой StringArr [1] .Split («<»), но это не эффективно и громоздко.

Каким будет способ?

+0

Посмотрите в [HTML Agility обновления] (http://htmlagilitypack.codeplex.com/), так как вы не разбора строки но HTML – Jetti

+0

Вас интересует только эта конкретная задача * или существуют другие сценарии синтаксического анализа? Анализ HTML не является тривиальным, и вы должны использовать установленные методы, если это не одна вещь, где вы точно знаете, что будет выглядеть во всех случаях. –

ответ

4

Вам нужен анализатор , пытаясь разделить строку, это будет просто временным взломом. Посмотрите в HtmlAgilityPack

Для примера HTML это будет нравится:

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(inputHtml); 

var text = doc.DocumentNode 
       .Descendants("a") 
       .Where(x => x.Attributes["id"]!=null && 
          x.Attributes["id"].Value == "def_") 
       .First() 
       .InnerText; 
+0

<3 Мне нравится этот подход в стиле LINQ –

3

вы можете использовать массив, как

split(new char[]{'<','>'} 

например

"<a href='javascript:void(0);' id='def_' name='color' rel='ml'>VALUE</a>".Split(new char[]{'<','>'}) 

возвращает результат, как

a href='javascript:void(0);' id='def_' name='color' rel='ml' 
VALUE 
/a 

Это общее решение задачи. Если вы вряд ли будете работать с HTML, не используйте таким образом, но используйте только определённые HTML парсеры.

Смежные вопросы