Cependant, j'essaie de créer un HTMLNode pour la balise P et de l'injecter dans le DOM HTMLDocument, il apparaît toujours comme une balise non fermée. Par exemple.Comment créer un noeud P compatible XHTML vide en utilisant HTML Agility Pack 1.4.0?
// 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 = "";
Ils finissent tous comme juste <p>
dans la sortie après avoir utilisé la méthode .Save()
. Je veux le fermer correctement pour XHTML comme <p />
ou <p></p>
. N'importe quel.
Ma solution: Ce que je peux faire est question CreateNode("<p> </p>")
(avec un espace entre les deux) et il conserve la totalité de la source, mais je pense qu'il doit y avoir une meilleure façon.
Autres options essayés ou envisagés:
Quand je tourne sur l'option
.OutputAsXml
il échappe aux entités existantes, par exemple
se tourne vers&nbsp;
qui n'est pas idéal, et il ne se ferme pas mon P injecté marque.Lorsque j'active l'option
.OptionWriteEmptyNodes
, elle ne ferme toujours pas mon point P injecté.- Je vois que l'Agility Pack contient l'enum
HtmlElementFlag
avec les valeursClosed, Empty, CData, CanOverlap
(Fermé peut-être utile) mais je ne vois pas où je l'appliquerais lors de la création d'un nouvel élément/nœud.