0

htmlagilitypack を使用してドキュメントに新しいノードを挿入しようとしています。ストリームからドキュメントを読み取り、ノードを挿入してから、ドキュメントを FileContentResult オブジェクトとして返します。

HtmlDocument ndoc = new HtmlDocument();
ndoc.Load(stream);

HtmlNode usern = HtmlNode.CreateNode("<img .... />");
usern.Attributes.Add("onclick", "javascript:document.location.href='/Home/Index';");
ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern);

using (MemoryStream ms = new MemoryStream())
{
   ndoc.Save(ms);
   ms.Seek(0, System.IO.SeekOrigin.Begin);
   fileBytes = ms.ToArray();
}

FileContentResult file = File(fileBytes, "text/html");
return file;

問題 : 新しいノード ( img ) が挿入されません。このコードを使用している場合、フッターのコンテンツがなくなり、ストリームからドキュメントを読み取って FileContentResult として返すと、すべてが完璧になります。このコードの問題点やどこが間違っているのか知りたいですか?

4

3 に答える 3

0

同じ問題に遭遇し、クローンオブジェクトを渡すことで解決しました。行を変更するだけです

ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern);

ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern.CloneNode(true));
于 2013-03-15T11:34:37.740 に答える
0

変えようとする

HtmlNode usern = HtmlNode.CreateNode("<img .... />");

ただimgする

HtmlNode usern = HtmlNode.CreateNode("<img></img>");

これを追加します

 ndoc.OptionWriteEmptyNodes = true;
于 2012-07-31T05:39:25.897 に答える
0

HTML Agility pack create new HTMLNodeを見てください。

これは、新しいノードを適切に作成する方法を示しています。私の経験では、彼らのコードは問題なく動作します。jQuery と同様に、段階を追って説明します。幸運を!

于 2012-07-31T05:36:17.560 に答える