Могу ли я указать HTML agility pack НЕ исправлять некоторые типы недопустимой разметки?

#umbraco #html-agility-pack

#umbraco #html-agility-pack

Вопрос:

У меня есть HTML agility pack, изменяющий часть моего HTML-кода в umbraco CMS, однако umbraco использует некоторые нестандартные html-oid (см. Ниже)

Проблема заключается в том, что после того, как html agility pack заменяет закрывающую косую черту вопросительным знаком.

тег макроса перед html agility pack:

 <?UMBRACO_MACRO macroAlias="RandomMacroTest" />
  

тег макроса после html agility pack:

 <?umbraco_macro macroalias="RandomMacroTest"?>
  

Есть какие-либо подсказки, как я мог бы обойти это? Скажите Html Agility pack игнорировать этот тег? Я просмотрел различные варианты, и ни один из них, похоже, не применим.

Последнее средство: вернуться назад и повторно исправить теги макросов с помощью замены регулярного выражения, но это кажется немного запутанным.

Ответ №1:

Включите OptionWriteEmptyNodes опцию в документе. Он должен сохранить этот тег.

 var htmlStr = @"<?UMBRACO_MACRO macroAlias=""RandomMacroTest"" />";
var doc = new HtmlDocument
{
    OptionOutputOriginalCase = true,
    OptionWriteEmptyNodes = true,
};
doc.LoadHtml(htmlStr);
doc.Save(Console.Out);
  

У вас будет вывод:

 <?UMBRACO_MACRO macroalias="RandomMacroTest" />
  

Комментарии:

1. Хотя я не уверен, что делать с оболочкой атрибута.