我被困住了, 这必须非常简单,但我不知道如何。
我有这段代码:
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
我该怎么转换呢?
感谢您提前做出的任何回复, 查帕斯
答案 0 :(得分:1)
为什么不使用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()
方法来创建它。但我强烈建议不要努力做到这一点。
答案 1 :(得分:0)
尝试以下代码。你需要做一些改变。控件innerHTML格式正确,可以用作xmlNode的内部XML(
)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);
希望这有帮助
答案 2 :(得分:0)
有一种方法可以从HtmlGenericControl获取你的OuterHtml:
using (TextWriter textWriter = new StringWriter())
{
using (HtmlTextWriter htmlWriter = new HtmlTextWriter(textWriter))
{
HtmlGenericControl control = new HtmlGenericControl("div");
control.Attributes.Add("One", "1");
control.Attributes.Add("Two", "2");
control.InnerText = "Testing 123";
control.RenderControl(htmlWriter);
}
}
textWriter.ToString()将为您提供以下内容:
<div One="1" Two="2">Testing 123</div>