HtmlAgilityPack автоматически закрывает тег формы - PullRequest
2 голосов
/ 18 августа 2011

Я пытаюсь проанализировать html-файл с этим кодом:

<div><form>...</div>...</form>

проблема в том, что HtmlAgilityPack автоматически закрывает тег формы перед тегом окончания div: <div><form>...</form></div>...</form>, поэтому, когда я анализирую формунекоторые элементы формы отсутствуют.(Я получаю только элементы для автоматически добавленного тега)

Я уже пробовал:

htmlDoc.OptionFixNestedTags = false;
htmlDoc.OptionAutoCloseOnEnd = false;
htmlDoc.OptionCheckSyntax = false;
HtmlNode.ElementsFlags.Remove("form");
HtmlNode.ElementsFlags.Add("form", HtmlElementFlag.CanOverlap);
HtmlNode.ElementsFlags.Add("div", HtmlElementFlag.CanOverlap);

Но ничего не помогает!

спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 12 апреля 2012

Мне кажется, что работает следующее:

HtmlAgilityPack.HtmlNode.ElementsFlags.Remove("form");

_document = new HtmlDocument();
_document.OptionAutoCloseOnEnd = true;
_document.LoadHtml(content);
0 голосов
/ 18 августа 2011

Зависит от того, что вы хотите сделать программно после анализа текста. Если вы не хотите делать с этим ничего особенного, используйте следующий код:

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml("<div><form>form and div</div>form</form>");

    doc.Save(Console.Out);

отобразит точно такую ​​же строку, то есть:

<div><form>form and div</div>form</form>

Поскольку библиотека была разработана с нуля, чтобы максимально сохранить исходный HTML.

Но с точки зрения того, как это представлено в DOM, и с точки зрения ошибок, это другая история. Вы не можете иметь одновременно 1) перекрывающиеся элементы 2) XML-подобный DOM (который не поддерживает перекрытия) и 3) без ошибок.

Так что это зависит от того, что вы хотите делать после разбора.

...