Извлечь содержимое в теги абзаца - PullRequest
1 голос
/ 20 декабря 2010

У меня есть следующий html в строке, и я должен извлечь содержимое только в тегах абзаца какие-либо идеи ??

ссылка http://www.public -domain-content.com / books / Coming_Race / C1P1.shtml

Я пытался

  const string HTML_TAG_PATTERN = "<[^>]+.*?>";
    static string StripHTML(string inputString)
            {
                return Regex.Replace(inputString, HTML_TAG_PATTERN, string.Empty);
            }

, он удаляет все теги html, но я не хочу удалять все теги, потому что это способ, которым я могу получить контент, такой как параграфтеги

во-вторых, в тексте разрывы строк до \ n и применение замены ("\ n", "") дозы не помогает, одна проблема заключается в том, что при применении

int UrlStart = e.Result.IndexOf("<p>"), urlEnd = e.Result.IndexOf("<p>&nbsp;</p></td>\r" );
     string paragraph = e.Result.Substring(UrlStart, urlEnd);
     extractedContent.Text = paragraph.Replace(Environment.NewLine, "");

<p>&nbsp;</p></td>\r это появляется в конце абзаца, но urlEnd доза не гарантирует, что отображается только абзац

извлеченная строка показывается в visual studio примерно так alt text эта страница загружена Webclient Конец HTMLpage

We will provide ourselves with ropes of\rsuitable length and strength- and- pardon me- you must not\rdrink more to-night.  our hands and feet must be steady and\rfirm tomorrow.\"\r<p>&nbsp;</p>     </td>\r    </tr>\r\r    <tr>\r     <td height=\"25\" width=\"10%\">\r     \r     </td><td height=\"25\" width=\"80%\" align=\"center\">\r       <font color=\"#FFFFFF\">\r       <font size=\"4\">1</font> &nbsp;\r       </font></td>\r     <td height=\"25\" width=\"10%\" align=\"right\"><a href=\"C2P1.shtml\">Next</a></td>\r    </tr>\r   </table>\r  </center>\r</div>\r<p align=\"center\"><a href=\"index.shtml\"><b>The Coming Race -by- Edward Bulwer Lytton</b></a></p>\r<P><B><center><A HREF=\"http://www.public-domain-content.com/encyclopedia.shtml\">Encyclopedia</a> - <A HREF=\"http://www.public-domain-content.com/books.shtml\">Books</a> - <A HREF=\"http://www.public-domain-content.com/religion.shtml\">Religion<a/> - <A HREF=\"http://www.public-domain-content.com/links2.shtml\">Links</a> - <A HREF=\"http://www.public-domain-content.com/\">Home</a> - <A HREF=\"http://www.webmaster-headquarters.com/mb/\">Message Boards</a></B><BR>This <a HREF=\"http://www.wikipedia.org/\">Wikipedia</a> content is licensed under the <a href=\"http://www.gnu.org/copyleft/fdl.html\">GNU Fr

1 Ответ

2 голосов
/ 20 декабря 2010

Не используйте регулярные выражения для разбора HTML. Используйте взамен HTML Agility Pack (или что-то подобное).

Быстрый пример, но вы можете сделать что-то вроде этого:

HtmlDocument document = new HtmlDocument();
document.Load("your_file_here.htm");
foreach(HtmlNode paragraph in document.DocumentElement.SelectNodes("//p"))
{
    // do something with the paragraph node here
    string content = paragraph.InnerText; // or something similar
}
...