HTMLAgilityPack не сохраняет оригинальные пустые теги - PullRequest
1 голос
/ 08 декабря 2010

Если у меня есть несколько пустых тегов, как это

<td  width="15px"/>

Пакет ловкости исправляет их как

<td  width="15px"></td>

Можно ли что-нибудь сделать, чтобы переопределить это поведение?

Ответы [ 3 ]

5 голосов
/ 11 января 2012

Установите для свойства OptionWriteEmptyNodes значение true на вашем HtmlDocument.

1 голос
/ 08 декабря 2010

Попробуйте перед сохранением:

if (HtmlNode.ElementsFlags.ContainsKey("td"))
{
    HtmlNode.ElementsFlags["td"] = HtmlElementFlag.Empty | HtmlElementFlag.Closed;
}
else
{
    HtmlNode.ElementsFlags.Add("td", HtmlElementFlag.Empty | HtmlElementFlag.Closed);
}

Это меняет поведение всех элементов td, что может не соответствовать вашему желанию.Я не знаю, как это сделать для каждого узла.

0 голосов
/ 28 декабря 2010

Хотя ответ @Corbin March не работает должным образом, это единственный ответ, который я нашел, который подходит близко. Проблема в том, что HAP все еще делает некоторые дополнительные исправления, которые делают это проблемой.

Исходный код:

<td  width="15px"/>

При установке ElementFlags, как указано выше, тег закрывающего элемента действительно не создается, однако исходный завершающий символ "/" удаляется. Это может быть проблемой в зависимости от вашего сценария, это было для меня. Оригинальный фрагмент становится:

<td  width="15px">
...