2012-07-31 3 views
0

htmlagilitypack을 사용하여 문서에 새 노드를 삽입하려고합니다.C#에서 html 문서에 새 노드 삽입

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 개체로 문서를 반환 한 후 노드를 삽입하고, 스트림에서 문서를 읽고있다. 이 코드를 사용하고 있고 스트림에서 문서를 읽고 FileContentResult로 반환 한 다음 모든 내용이 완벽하면 내 바닥 글 내용이 사라집니다. 이 코드의 문제점이나 내가 잘못하고있는 부분을 알고 싶습니다.

답변

0

HTML Agility pack create new HTMLNode을 살펴보십시오.

새 노드를 올바르게 작성하는 방법을 보여줍니다. 내 경험에 의하면, 그들의 코드는 잘 작동합니다. 단계별로 jQuery와 비슷합니다. 행운을 빕니다!

+0

에 선

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

을 수정합니다. – jamesbar2

0

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

그냥

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

을 IMG을 변경하고 내가 같은 문제를 통해 제공된 복제 개체를 전달하여 해결이

ndoc.OptionWriteEmptyNodes = true; 
+0

감사합니다. 시도했지만 작동하지 않습니다. –

+0

@King Kong이 (가)이 ndoc.OptionOutputAsXml = true를 시도합니다. –

+0

예, 작동하지만 바닥 글 내용이 여전히 누락되었습니다 –

0

를 추가하려고합니다. 단지 즉, 새로운 요소를 생성하기 위해 현재 노드를 사용할 필요가

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