Как найти тег конца заголовка в выводе html - PullRequest
0 голосов
/ 25 февраля 2012

Я хочу найти индекс тега из вывода html страницы в модуле http.Я использую

HTMLOutput.IndexOf("</head>");

, где HTMLOutput - строковый параметр, который содержит весь вывод html определенной страницы.С помощью вышеупомянутого метода я могу найти тег Index of end head, но только когда он является единственным тегом end head, проблема возникает, когда на странице есть некоторые функции javascript, которые вставляют некоторое динамическое html-содержимое и содержат некоторый тег end headв нем, например,

newWindow.document.writeln('</head>')

, а также, если на странице есть несколько строк комментариев, добавленных сторонними инструментами, содержащимися в нем.

Так что я не могу найтиИндекс оригинального тега, есть ли у кого-нибудь представление о том, как справиться с этим, может быть какое-то регулярное выражение или что-то, что может помочь мне в этом сценарии.

Ответы [ 2 ]

3 голосов
/ 26 февраля 2012

Вы можете использовать Html Agility Pack, чтобы найти тег <head>, а затем вставить свой элемент <script> внутри него:

var doc = new HtmlDocument();
doc.LoadHtml(HTMLOutput);
var head = doc.DocumentNode.SelectSingleNode("//head");
head.AppendChild(HtmlNode.CreateNode("<script>...</script>"));

Чтобы получить HTML-код результата, вы можете просто использовать:

using (StringWriter writer = new StringWriter())
{
    doc.Save(writer);
    HTMLOutput = writer.ToString();
}

Теперь HTMLOutput переменная содержит измененный HTML.

1 голос
/ 25 февраля 2012

Если вы можете убедиться, что весь ваш код javascript находится в теге, тогда вы можете использовать

HTMLOutput.LastIndexOf("</head>");

Но лучше использовать " HTMLAgilityPack " и проанализировать ваш контент.

...