Comment ajouter HtmlGenericControl à un HtmlNode?

c# html html-agility-pack htmlgenericcontrol

Question

Je suis coincé, cela doit être très simple à accomplir mais je ne vois pas comment.

J'ai ce code:

 var divEl = doc.DocumentNode.SelectSingleNode("//div[@id='" + field.Id + "']");

 var newdiv = new HtmlGenericControl("div");
 newdiv.Attributes.Add("id", label.ID);
 newdiv.Attributes.Add("text", label.Text);
 newdiv.Attributes.Add("class", label.CssClass);

Et je dois faire quelque chose comme ça:

 var divEl = doc.DocumentNode.SelectSingleNode("//div[@id='" + field.Id + "']");

 var newdiv = new HtmlGenericControl("div");
 newdiv.Attributes.Add("id", label.ID);
 newdiv.Attributes.Add("text", label.Text);
 newdiv.Attributes.Add("class", label.CssClass);

Comment puis-je convertir cela?

Merci pour toute réponse à l'avance, chapas

Réponse acceptée

Essayez le code ci-dessous. vous devrez faire des changements. Les contrôles innerHTML sont bien formés et peuvent être utilisés comme innerXML pour un xmlNode

XmlDocument doc = new XmlDocument();
//Load your xml here TODO
var divEl = doc.DocumentElement.SelectSingleNode("//div[@id='test']"); //Change your xpath here TODO
var newdiv = new HtmlGenericControl("div"); 
newdiv.Attributes.Add("id", "id"); 
newdiv.Attributes.Add("text", "text"); 
newdiv.Attributes.Add("class", "class");

XmlNode newNode = doc.CreateNode("NodeType", "NodeName", "URI/if/any"); //update your variables here
newNode.InnerXml = newdiv.InnerHtml;
divEl.AppendChild(newNode);

J'espère que cela t'aides


Réponse populaire

Pourquoi ne pas simplement créer le nœud en utilisant l'API de HAP? Cela devrait fonctionner de la même façon.

var newDiv = HtmlNode.CreateNode("<div/>");
newDiv.Attributes.Add("id", label.ID);
newDiv.Attributes.Add("text", label.Text);
newDiv.Attributes.Add("class", label.CssClass);

divEl.AppendChild(newDiv);

Il n'y a pas moyen facile d'obtenir le code HTML externe de la HtmlGenericControl instance (AFAIK). Si vous en aviez, vous pouvez simplement transmettre le code HTML à la méthode HtmlNode.CreateNode() pour le créer. Mais je suggérerais fortement de ne pas essayer de faire ce travail.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi