【发布时间】:2013-04-13 15:04:56
【问题描述】:
我在这里得到了真正的幽灵效果。 我尝试替换一个 img 节点。如果我打印出文档 html 一次,什么都不会发生。 如果我不打印出文档html,就可以成功替换img标签。 真的很奇怪,谁能解释一下?
我的html代码
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="swap"></div>
</body>
</html>
还有我的 c# 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;
using System.IO;
namespace htmlagile
{
class Program
{
static void Main(string[] args)
{
HtmlDocument htmldoc = new HtmlDocument();
string htmlstring;
using (StreamReader sr = new StreamReader("HTMLPage1.html"))
{
htmlstring = sr.ReadToEnd();
}
htmldoc.LoadHtml(htmlstring);
var div = htmldoc.DocumentNode.SelectNodes("//div");
Console.WriteLine(htmldoc.DocumentNode.OuterHtml);
foreach (var item in div)
{
HtmlNode newTag = htmldoc.CreateElement("p");
newTag.SetAttributeValue("id", "change");
item.ParentNode.ReplaceChild(newTag, item);
}
Console.WriteLine(htmldoc.DocumentNode.OuterHtml);
}
}
}
如果我注释掉我的第一个console.WriteLine,就可以成功更改元素。
【问题讨论】:
-
缺乏详细信息进行故障排除。快照不太清晰。
-
嗨,大卫,我附上了完整的代码。有什么想法吗??
-
没有理由。你确定这是因为你的第一次打印吗?
-
我不知道。如果我评论我的 writeline,只有那一行,可以更改元素。然后,我尝试获取 html 文档的克隆,它得到了正确的结果。
标签: c# html-agility-pack