C# 使用HTML Agility Pack将单个节点替换为多个节点

C# 使用HTML Agility Pack将单个节点替换为多个节点,c#,.net,html-agility-pack,C#,.net,Html Agility Pack,我有一些输入标记,它们是占位符,我正在用一些HTML替换它们。很多时候,我用的HTML只不过是一个标记,这很简单: HtmlNode node = HtmlNode.CreateNode(sReplacementString); inputNode.ParentNode.ReplaceChild(node, inputNode); 但是,如果要用两个或多个节点替换inputNode,则CreateNode(sReplacementString)仅读取第一个节点。如果sReplacementSt

我有一些输入标记,它们是占位符,我正在用一些HTML替换它们。很多时候,我用的HTML只不过是一个标记,这很简单:

HtmlNode node = HtmlNode.CreateNode(sReplacementString);
inputNode.ParentNode.ReplaceChild(node, inputNode);

但是,如果要用两个或多个节点替换
inputNode
,则CreateNode(sReplacementString)仅读取第一个节点。如果
sReplacementString
是多个标记,有没有办法进行替换?

据我所知,没有直接的方法
HtmlNode.CreateNode
方法从HTML代码段创建一个节点,如果有多个节点,则仅创建第一个节点

作为一种解决方法,您可以创建一个临时节点,从
sReplacementString
创建其子节点,然后将这些子节点追加到
inputNode
节点之后,最后删除
inputNode

var temp = doc.CreateElement("temp");
temp.InnerHtml = sReplacementString;
var current = inputNode;
foreach (var child in temp.ChildNodes)
{
    inputNode.ParentNode.InsertAfter(child, current);
    current = child;
}
inputNode.Remove();

你能提供更多的上下文吗?您可以用包含两个子节点的div或类似的内容替换节点。@SteveDanner我不需要任何额外的标记
inputNode.ParentNode
可以是任何东西,因此需要replace函数才能工作!注意,虽然我没有Remove函数,所以我使用了
inputNode.ParentNode.RemoveChild(inputNode)
正是我所需要的,我花了很长时间考虑这将是一种现有的方法,但似乎在使用HtmlAgilityPack时,您需要经常为自己编写一些随机的东西。