HTML敏捷包-ReplaceNode不';不要更改主体的内部HTML

HTML敏捷包-ReplaceNode不';不要更改主体的内部HTML,replace,innerhtml,html-agility-pack,Replace,Innerhtml,Html Agility Pack,我有这个 该机构: <body><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent leo leo, ultrices eu venenatis et, rutrum fringilla dolor.</p></body> Lorem ipsum Door sit amet,是一位杰出的领导者。利奥·利奥、威尼斯特莱斯、弗林吉亚·多洛 守则: HtmlNode

我有这个

该机构:

<body><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent leo leo, ultrices eu venenatis et, rutrum fringilla dolor.</p></body>
Lorem ipsum Door sit amet,是一位杰出的领导者。利奥·利奥、威尼斯特莱斯、弗林吉亚·多洛

守则:

HtmlNode body = doc.DocumentNode.SelectSingleNode("//body");

Dictionary<HtmlNode, HtmlNode> toReplace = new Dictionary<HtmlNode, HtmlNode>();

// I do some logic here adding nodes to the toReplace dictionary.

foreach (HtmlNode replaceNode in toReplace.Keys)
{
    replaceNode.ParentNod.ReplaceChild(toReplace[replaceNode], replaceNode);
}
HtmlNode body=doc.DocumentNode.SelectSingleNode(“//body”);
Dictionary toReplace=新字典();
//我在这里做了一些逻辑操作,将节点添加到toReplace字典中。
foreach(toReplace.Keys中的HtmlNode replaceNode)
{
replaceNode.parentNode.ReplaceChild(替换[replaceNode],replaceNode);
}
执行此操作后,body节点的InnerHtml与开始时一样,尽管OutterHtml或InnerText显示了良好的结果。我的代码有问题吗

结果是:

// body.InnerHtml
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent leo leo, ultrices eu venenatis et, rutrum fringilla dolor.</p>

// body.OutterHtml
<body><p>Lorem ipsum dolor sit amet...</p></body>
//body.InnerHtml
Lorem ipsum dolor sit amet,是一位杰出的献身者。利奥·利奥、威尼斯特莱斯、弗林吉亚·多洛

//body.OutterHtml 我爱你,我爱你


我认为这可能与添加节点以替换旧节点的方式有关。查看此解决方案是否适用于截断文本节点。我做了一个快速测试,三个结果都一样

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);
HtmlNode body = doc.DocumentNode.SelectSingleNode("//body");

foreach (var paragraph in body.Descendants("p"))
{
    paragraph.InnerHtml = paragraph.InnerHtml.Substring(0, 25) + "...";
}

Console.WriteLine(body.InnerHtml);
Console.WriteLine(body.InnerText);
Console.WriteLine(body.OuterHtml); 

我认为这可能与您添加节点以替换旧节点的方式有关。查看此解决方案是否适用于截断文本节点。我做了一个快速测试,三个结果都一样

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);
HtmlNode body = doc.DocumentNode.SelectSingleNode("//body");

foreach (var paragraph in body.Descendants("p"))
{
    paragraph.InnerHtml = paragraph.InnerHtml.Substring(0, 25) + "...";
}

Console.WriteLine(body.InnerHtml);
Console.WriteLine(body.InnerText);
Console.WriteLine(body.OuterHtml); 

你这里的东西看起来不错。但是很难说没有看到新旧节点。你能展示一个身体的例子和一对新旧的节点吗?Rohit,我已经添加了这个例子。你在这里看到的似乎很好。但是很难说没有看到新旧节点。你能展示一个身体的例子和一对旧的和新的节点吗?Rohit,我已经添加了这个例子。这是真的,它与我在更换节点之前对身体所做的事情有关。我在其他bug上做了一些工作,好的是现在它可以工作了。不幸的是,我不知道为什么:)这是真的,它与我在更换节点之前对身体所做的事情有关。我在其他bug上做了一些工作,好的是现在它可以工作了。不幸的是,我不知道为什么:)