2010-05-17 2 views
0

Я попытался понять несколько примеров, включая вопросы здесь, поэтому я извиняюсь, если это кажется мне дубликат, но я не могу найти регулярное выражение, которое я могу понять.
У меня есть HTML для синтаксического анализа с использованием синтаксического анализатора XML, но я хочу удалить из него <head> </head > теги из этого содержимого, так как остальные действительны для нормального анализа XML. теги < голова > к </голова > должны быть удалены, а их содержание так, чтобы внешний HTML не влияет < тела > теги и т.д.
Это раздел, включая HTML Head Я хочу снять для справки:Как удалить именованные 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, тогда это было бы здорово. Голова всегда одна и та же - я хочу удалить из < голову > в </head > включительно только и, если возможно, удалите DOCTYPE из текста.

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

ответ

1

Распаковка Тело было проще - вот RegEx Я использую:

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

Теперь я могу разобрать, что обычно с LINQ к -xml!

+0

+1 простой и простой – Thea

+0

Если вы не контролируете HTML-код и гарантируете его корректность, '' не гарантируется. –

+0

В этом случае HTML всегда один и тот же, однако это хороший момент, что этот элемент может отсутствовать во всех случаях. – RoguePlanetoid

2

HTML Agility Pack

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

+0

Я уверен, что это нормально нормально - однако это больше, чем мне нужно - просто нужно удалить тег и содержимое для одной вещи - до тех пор, пока все теги заголовка и сами теги заголовка удалены - вот и все Мне нужно, не нужно ничего больше. – RoguePlanetoid

+0

Если производительность не является критичной, я все равно буду использовать пакет гибкости HTML, поскольку он гораздо более надежный. Вы также обнаружите, что попытка проанализировать HTML как XML более проблематична, чем вы могли бы подумать (например, сущности chracter). –

1

Вы можете использовать String.substring + String.indexOf извлечь элемент тела XML.

Код должен быть что-то вроде этого:

MyHtml.Substring(sHtml.IndexOf("<body>"), sHtml.IndexOf("</body>") - sHtml.IndexOf("<body>") + 7); 
+0

Извлечение тела из Отдыха может быть правильным путем, спасибо! – RoguePlanetoid

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