Однако я пытаюсь создать HTMLNode для тега P и вставить его в DOM HTMLDocument, он всегда отображается как закрытый тег. Например.
// different ways I've tried creating the node:
var p = HtmlNode.CreateNode("<p />");
var p = HtmlNode.CreateNode("<p></p>");
var p = HtmlNode.CreateNode("<p>");
var p = HtmlTextNode.CreateNode("<p></p>");
// some other properties I've played with:
p.Name = "p";
p.InnerHtml = "";
Все они заканчиваются как <p>
на выходе после использования метода .Save()
.
Я хочу, чтобы он был правильно закрыт для XHTML, как <p />
или <p></p>
. Либо в порядке.
Мой обходной путь: Что я могу сделать, это выпустить CreateNode("<p> </p>")
(с пробелом между ними), и он сохраняет весь источник, но я думаю, что должен быть лучший способ.
Другие опробованные или рассмотренные варианты:
Когда я включаю опцию .OutputAsXml
, она экранирует существующие сущности, например,
превращается в &nbsp;
, что не идеально, и не закрывает введенный мной тег P.
, когда я включаю опцию .OptionWriteEmptyNodes
, она все равно не закрывает мой введенный тег P.
- Я вижу, что Agility Pack содержит перечисление
HtmlElementFlag
со значениями Closed, Empty, CData, CanOverlap
(Closed может быть полезно), но не может видеть, где я могу его применить при создании нового элемента / узла.