如何将HtmlGenericControl添加到HtmlNode?

c# html html-agility-pack htmlgenericcontrol

我被卡住了,这一定非常简单,但我不知道怎么做。

我有这个代码:

 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);

我需要做这样的事情:

    divEl.AppendChild(newdiv); //not working its expecting a HtmlNode, not a HtmlGenericControl

我怎么能转换这个?

感谢提前做出任何回应,chapas

一般承认的答案

请尝试以下代码。你需要做一些改变。控件innerHTML格式正确,可以用作xmlNode的innerXML

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);

希望这可以帮助


热门答案

为什么不使用HAP的API创建节点呢?它应该非常相似。

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);

没有简单的方法来获取HtmlGenericControl实例(AFAIK)的外部HTML。如果你有它,你可以将HTML传递给HtmlNode.CreateNode()方法来创建它。但我强烈建议不要努力做到这一点。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因