Как удалить именованные HTML-теги и содержимое из строки? - PullRequest
0 голосов
/ 17 мая 2010

Я попытался понять несколько примеров, в том числе вопросы здесь, поэтому я прошу прощения, если это кажется мне дубликатом, но я не могу найти выражение RegularExpression, которое я могу понять.
У меня есть некоторый HTML-код для анализа с использованием синтаксического анализатора XML - но я хочу удалить из этого содержимого теги , так как остальное достаточно для обычного синтаксического анализа XML. Теги до должны быть удалены и их содержимое, чтобы внешний HTML не затрагивался теги и т.д. Это раздел, включающий заголовок HTML, который я хочу удалить для справки:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
    <head>
    <link rel="stylesheet" type="text/css" href="/style/stylesheet.css" />
    <meta name="description" content="Information" />
    <base target="_top">
</head>
<body>
<!-- Body Here -->
</body>
</html>

Мне также нужно удалить DocType, если это можно сделать с помощью RegEx, тогда это было бы здорово. Голова всегда одна и та же - я хочу удалить только от до включительно и, если возможно, удалить также DOCTYPE из текста.

Также это необходимо для работы в Silverlight и использования System.Text.RegularExpressions или аналогичного для работы.

Ответы [ 3 ]

2 голосов
/ 17 мая 2010

HTML-пакет Agility

Регулярные выражения и HTML это грех ...

1 голос
/ 17 мая 2010

Извлечение тела было проще - вот RegEx, который я использую:

@"\<body\>(.*?)\</body\>"

Теперь я могу нормально разобрать это с помощью LINQ-to-XML!

1 голос
/ 17 мая 2010

Вы можете использовать string.Substring + string.IndexOf для извлечения XML-элемента body.

Код должен быть примерно таким:

MyHtml.Substring(sHtml.IndexOf("<body>"), sHtml.IndexOf("</body>") - sHtml.IndexOf("<body>") + 7);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...