Что такое хорошая библиотека HTML для ASP.NET, которая поддерживает замену тегов HTML5 обратно совместимыми эквивалентами? - PullRequest
3 голосов
/ 18 апреля 2011

Некоторое время я запускал регулярное выражение string.replace, чтобы изменить вывод HTML для старых браузеров, заменив определенные HTML-теги тегами span / div через HttpModule. Поскольку IE6-8 не распознает теги, такие как article, footer и так далее.

Но, пытаясь исправить ошибку в шаблоне регулярных выражений (и публикуя об этом здесь), я обнаружил, что это действительно НЕ хороший способ сделать это, регулярное выражение не является анализатором HTML. (Прочитайте об этом большую статью Джеффа Этвуда)

Поскольку в моем регулярном выражении все еще есть ошибка, я начинаю искать альтернативное решение этой проблемы. Я использовал modernizr , и я прекрасно работаю. Но моя проблема в том, что некоторые пользователи приложения, которое я создаю, не могут использовать JS, и мне все еще нужна разметка в HTML5 (в основном для видео).

Кто-нибудь делал это без JS и регулярных выражений? Я искал синтаксический анализатор HTML, но не нашел такого, где я мог бы заменить имена тегов.

Ответы [ 3 ]

3 голосов
/ 19 апреля 2011

Вы пробовали Html Agility Pack ? Кажется, это де-факто библиотека .NET для манипулирования HTML.

2 голосов
/ 19 апреля 2011

Два достаточно известных парсера .NET для HTML - это пакет Agility Pack для HTML и SGMLReader . Я не использовал ни в гневе, поэтому не могу дать подробный совет по ним.

Однако результатом парсера обычно является DOM, а DOM API не предоставляет средства для изменения имени элемента. Поэтому в каждом случае, когда вы хотите конвертировать, вам нужно:

  • Создать новый элемент div или span
  • переместить атрибуты из элемента HTML5 на новый
  • добавить любое подходящее имя класса, которое вы хотите, к атрибуту класса (например, «нижний колонтитул» или «статья»)
  • переместить дочерние узлы элемента HTML5 в дочерние узлы нового (сохраняя порядок)
  • заменить элемент HTML5 в его родительском элементе новым элементом.
0 голосов
/ 19 апреля 2011

Я не знаком с ASP.NET и C #, но вы, возможно, захотите взглянуть на библиотеки XML - они могут принять ваш HTML5 в качестве входных данных, даже если это не совсем XML, и позволят вам выполнить замену тега, который вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...