Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用HtmlAlityPack将节点附加到内部文本_C#_Html Agility Pack - Fatal编程技术网

C# 使用HtmlAlityPack将节点附加到内部文本

C# 使用HtmlAlityPack将节点附加到内部文本,c#,html-agility-pack,C#,Html Agility Pack,问题:我需要删除所有标记的style属性,如果它包含font-weight:bold属性,则向其添加 例如:如果html是 此处有一些文本 输出应为: 此处有一些文本 我正在使用以下代码 var htmlDocument = new HtmlDocument(); htmlDocument.LoadHtml(htmlPage); foreach (var htmlTag in attributetags) {

问题:我需要删除所有
标记的style属性,如果它包含
font-weight:bold
属性,则向其添加

例如:如果html是

此处有一些文本

输出应为:

此处有一些文本

我正在使用以下代码

var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(htmlPage);
            foreach (var htmlTag in attributetags)
            {
                var Nodes = htmlDocument.DocumentNode.SelectNodes("//p");
                if (Nodes != null)
                {
                    bool flag = false;
                    foreach (var Node in Nodes)
                    {
                        if (Node.Attributes["style"] != null)
                        {
                            if (Node.Attributes["style"].Value.Contains("font-weight:bold"))
                            {                                    
                               var bnode = HtmlNode.CreateNode("<b>");
                               Node.PrependChild(bnode);
                            }
                            Node.Attributes.Remove("style");                            
                        }
                    }
                }
            }
var htmlDocument=new htmlDocument();
htmlDocument.LoadHtml(htmlPage);
foreach(attributetags中的var htmlTag)
{
var Nodes=htmlDocument.DocumentNode.SelectNodes(“//p”);
如果(节点!=null)
{
布尔标志=假;
foreach(节点中的var节点)
{
if(Node.Attributes[“style”!=null)
{
if(Node.Attributes[“style”].Value.Contains(“font-weight:bold”))
{                                    
var bnode=HtmlNode.CreateNode(“”);
Node.PrependChild(bnode);
}
Node.Attributes.Remove(“样式”);
}
}
}
}
我还尝试了
Node.InsertAfter(bcnode,Node),Node.InsertBefor(bnode,Node)
HtmlDocument doc=new HtmlDocument();
doc.LoadHtml(html);
//选择所有具有粗体字体大小样式的段落
var段落=doc.DocumentNode.SelectNodes(//p[contains(@style,'font-weight:bold')]);
foreach(段落中的var p)
{
//从样式中删除粗体字体
var style=Regex.Replace(p.Attributes[“style”].Value,“font-weight:bold;?”,“”);
p、 SetAttributeValue(“样式”,样式);//指定新样式
//将段落内容包装到b标记中
var b=HtmlNode.CreateNode(“”);
b、 InnerHtml=p.InnerHtml;
p、 Clear();
p、 儿童(b);
}
如果需要,可以在一行中包装段落内容:

p.InnerHtml = HtmlNode.CreateNode("<b>" + p.InnerHtml + "</b>").OuterHtml;
p.InnerHtml=HtmlNode.CreateNode(“+p.InnerHtml+”).OuterHtml;
@user2729272欢迎:)我添加了一行语句,用于将段落内容包装到b标记中。我认为它不太可读,但更简洁
p.InnerHtml = HtmlNode.CreateNode("<b>" + p.InnerHtml + "</b>").OuterHtml;