C# Net核心:将字符串转换为标记生成器

C# Net核心:将字符串转换为标记生成器,c#,asp.net-core,.net-core,asp.net-core-mvc,C#,Asp.net Core,.net Core,Asp.net Core Mvc,以下代码将标记生成器转换为字符串。 什么是相反的?如何将反向的字符串转换为标记生成器? 正在寻找解决方案 作为一个选项,您可以使用html解析器,如获取html节点,然后使用节点的名称、属性和内部html创建一个: public TagBuilder GetTagBuilder(string html) { var node = HtmlAgilityPack.HtmlNode.CreateNode(html); var tagBuilder = new TagBuilder(

以下代码将
标记生成器
转换为
字符串
。 什么是相反的?如何将反向的
字符串
转换为
标记生成器
? 正在寻找解决方案


作为一个选项,您可以使用html解析器,如获取html节点,然后使用节点的名称、属性和内部html创建一个:

public TagBuilder GetTagBuilder(string html)
{
    var node = HtmlAgilityPack.HtmlNode.CreateNode(html);
    var tagBuilder = new TagBuilder(node.Name);
    tagBuilder.MergeAttributes(node.Attributes.ToDictionary(x => x.Name, x => x.Value));
    tagBuilder.InnerHtml = node.InnerHtml;
    return tagBuilder;
}
例如:

var html = @"<div id=""div1"" class=""class1"">Something</div>";
var tagBuilder = GetTagBuilder(html);
var str = tagBuilder.ToString();

使用XmlDocument

var doc = new System.Xml.XmlDocument();
doc.LoadXml(html);
TagBuilder tagBuilder = new TagBuilder(doc.DocumentElement.Name);
tagBuilder.MergeAttributes(doc.DocumentElement.Attributes.Cast<System.Xml.XmlAttribute>().ToDictionary(x => x.Name, x => x.Value));
tagBuilder.InnerHtml = doc.DocumentElement.InnerXml;
return tagBuilder;
var doc=new System.Xml.XmlDocument();
doc.LoadXml(html);
TagBuilder TagBuilder=新的TagBuilder(doc.DocumentElement.Name);
tagBuilder.MergeAttributes(doc.DocumentElement.Attributes.Cast().ToDictionary(x=>x.Name,x=>x.Value));
tagBuilder.InnerHtml=doc.DocumentElement.InnerXml;
返回标记生成器;

TagBuilder实现IHtmlContent接口,它是否提供任何方法来获取字符串输入和TagBuilder输出?TagBuilder不是一个html元素的集合吗?不确定,尝试通过将字符串转换为TagBuilder进行研究如果你的意思是获取整个html字符串并创建TagBuilder的实例,那么你不能。但是,如果需要,可以将标记名作为参数传递。我相信你可能会感兴趣。@JeremyWatkins做研究应该在采取步骤询问StackOverflow之前完成……虽然这个代码片段可能会解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。您可以使用该按钮改进此答案,以获得更多选票和声誉!
<div class="class1" id="div1">Something</div>
var doc = new System.Xml.XmlDocument();
doc.LoadXml(html);
TagBuilder tagBuilder = new TagBuilder(doc.DocumentElement.Name);
tagBuilder.MergeAttributes(doc.DocumentElement.Attributes.Cast<System.Xml.XmlAttribute>().ToDictionary(x => x.Name, x => x.Value));
tagBuilder.InnerHtml = doc.DocumentElement.InnerXml;
return tagBuilder;