当前位置: 首页 > 编程语言 > C#

HtmlAgilityPack替换节点分享

时间:2023-04-11 12:15:28 C#

HtmlAgilityPack替换节点我想用新节点替换一个节点。如何获得节点的确切位置并完全替换它?我尝试了以下方法,但我无法弄清楚如何获取节点的索引或调用ReplaceChild()的父节点。stringhtml="bold_onestrongbold_two";HtmlDocument文档=newHtmlDocument();文档.LoadHtml(html);varbolds=document.DocumentNode.Descendants().Where(item=>item.Name=="b");foreach(var项目以粗体显示){stringnewNodeHtml=GenerateNewNodeHtml();HtmlNodenewNode=newHtmlNode(HtmlNodeType.Text,document,?);item.ParentNode.ReplaceChild()}要创建新节点,请使用HtmlNode.CreateNode()工厂方法,不要直接使用构造函数。这段代码应该适合你:varhtmlStr="bold_onestrongbold_two";vardoc=newHtmlDocument();doc.LoadHtml(htmlStr);varquery=doc.DocumentNode.Descendants("b");foreach(variteminquery.ToList()){varnewNodeStr="bar";varnewNode=HtmlNode.CreateNode(newNodeStr);item.ParentNode.ReplaceChild(newNode,item);请注意,我们需要在查询中调用ToList(),我们将修改文档,如果您不这样做,它将失败。如果你想用这个字符串替换:“sometextnodeanothernode”问题是它不再是单个节点而是一系列节点。您可以使用HtmlNode.CreateNode()对其进行解析,但最后,您只是引用序列的第一个节点。您需要使用父节点进行替换。varhtmlStr="bold_onestrongbold_two";vardoc=newHtmlDocument();doc.LoadHtml(htmlStr);varquery=doc.DocumentNode.Descendants("b");foreach(variteminquery.ToList()){varnewNodesStr="一些文本节点另一个节点";varnewHeadNode=HtmlNode.CreateNode(newNodesStr);item.ParentNode.ReplaceChild(newHeadNode.ParentNode,item);我正在为新生成的节点使用HtmlDocument.DocumentNode。以上就是C#学习教程:HtmlAgilityPack替换节点分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——stringhtml="bold_onestrongbold_two";HtmlDocument文档=newHtmlDocument();文档.LoadHtml(html);varbolds=document.DocumentNode.Descendants().Where(item=>item.Name=="b");foreach(variteminbolds){stringnewNodeHtml=GenerateNewNodeHtml();varnodeDocument=newHtmlDocument();nodeDocument.LoadHtml(newNodeHtml);item.ParentNode.ReplaceChild(nodeDocument.DocumentNode);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: